3

C規格から

6.3.1.1

intが元のタイプのすべての値を表すことができる場合(ビットフィールドの場合、幅によって制限されます)、値はintに変換されます。それ以外の場合は、unsignedintに変換されます。これらは整数プロモーションと呼ばれます。

つまりlong int、式でaを使用すると、 unsigned int?にダウングレードされるということです。

4

2 に答える 2

3

引用したビットは、その上のテキストによって制限されています。

以下は、int または unsigned int を使用できる式で使用できます。

  • 整数変換ランクが int および unsigned int のランクよりも小さい整数型のオブジェクトまたは式。
  • _Bool、int、signed int、または unsigned int 型のビット フィールド。

int が元の型のすべての値を表すことができる場合、値は int に変換されます。それ以外の場合は、unsigned int に変換されます。これらは整数プロモーションと呼ばれます。他のすべての型は、整数の昇格によって変更されません。

つまり、またはlong intに昇格しません。intunsigned int

于 2013-02-21T05:17:22.763 に答える
1

「元の型」とは、セクション 6.3 で定義されているように、「[...] 整数変換ランクが int および unsigned int のランク以下の整数型 (int または unsigned int 以外)」を指すと思います。 .1.1.2. しかし、いい試み:)

于 2013-02-21T05:12:54.550 に答える