2

6.3.1.1 状態

符号付き整数型のランクは、精度の低い符号付き整数型のランクより大きくなければなりません。

long long int のランクは long int のランクより大きくなければならず、long int のランクは int のランクより大きくなければならず、それは short int のランクより大きくなければならず、signed char のランクよりも大きくなければならない。


だから、これは当てはまらないでしょうか

signed   char has 32 bits (1 padding, 1 sign, 30 precision)
unsigned char has 32 bits (0 padding, 0 sign, 32 precision)
signed   int  has 32 bits (1 padding, 1 sign, 30 precision)
unsigned int  has 32 bits (2 padding, 0 sign, 30 precision)
4

2 に答える 2

4

ちょうど私自身の答えを見つけました。6.2.5 (8) によると、これは許可されていません。

符号が同じで整数変換ランクが異なる 2 つの整数型 (6.3.1.1 を参照) の場合、整数変換ランクが小さい方の値の範囲は、他の型の値の部分範囲になります。

于 2010-06-22T08:17:16.587 に答える
0

char 変数に関するあなたの仮定は間違っています。limits.h では、CHAR_BIT は 8 です。32 あります。

標準の「5.2.4.2.1 整数型のサイズ」では、CHAR_BIT を 8 と定義しています。

于 2010-06-22T13:55:44.907 に答える