web-dev-qa-db-ja.com

商と剰余を1つのステップで取得するにはどうすればよいですか?

重複の可能性:
除算と剰余の取得を同時に行いますか?

整数除算を2回実行せずに、商と整数除算の余りの両方を1つのステップで取得することは可能ですか?

19
dtech

divがこれを行います。 参照 および例を参照してください:

/* div example */
#include <stdio.h>
#include <stdlib.h>

int main ()
{
  div_t divresult;
  divresult = div (38,5);
  printf ("38 div 5 => %d, remainder %d.\n", divresult.quot, divresult.rem);
  return 0;
}

出力:

38 div 5 => 7, remainder 3.

編集:

C仕様によると:

7.20一般的なユーティリティ

The types declared are size_t and wchar_t (both described in 7.17),
div_t
which is a structure type that is the type of the value returned by the div function,
ldiv_t
which is a structure type that is the type of the value returned by the ldiv function, and
lldiv_t
which is a structure type that is the type of the value returned by the lldiv function.

...しかし、それはdiv_tの定義が何であるかを述べていません。

24
John Dibling

はい、これを行う div() (およびldiv、場合によってはlldiv)という標準関数があります。

8
Greg Hewgill