0

K&R C の本の演習問題を解いていたときに、演習問題 2.1 に出くわしました。

最初は として取得しましたが、プレースホルダーを使用しましたが、現在は と同じ番号を取得しUINT_MAX-1%uますULONG_MAX

付録 B の本では、彼らはそれがUINT_MAXすべきで65535あり、あるULONG_MAXべきだと言っています4294967295が、演習を実行すると、UINT_MAXULONG_MAXasの両方が得られ4294967295ます。

何故ですか?

4

3 に答える 3

5

まず第一に、 an を出力する正しい方法unsigned longは not %ubut%luです。第二に、標準ではの最小UINT_MAXは 65535 であると規定されています。

5.2.4.2.1 整数型のサイズ

それらの実装定義の値は、大きさ(絶対値) が、同じ符号で示されたものと等しいか、またはそれ以上でなければなりません。

于 2012-03-17T12:21:23.963 に答える
1

32 ビット プラットフォームでは、intlongは通常同じであるため、最大値も同じです。もちろん、署名されていない対応物についても同じです。

于 2012-03-17T12:25:18.783 に答える
0

付録が間違っています。唯一の保証は、 sizeof(long) >= sizeof(int) >= sizeof(char) が等しい可能性に注意することです。

于 2013-05-27T13:42:52.033 に答える