0

C変換を調べて、私がよく理解していない整数プロモーションに関する段落を見つけました、それは言います:

"Integer types smaller than int are promoted when an operation is performed on them. If all values of the original type can be represented as an int, the value of the smaller type is converted to an int; otherwise, it is converted to an unsigned int"

それを考慮して:

  1. 符号なし整数型のランクは、対応する符号付き整数型のランクと同じです。

  2. long long intのランクは、long intのランクよりも大きく、intのランクよりも大きく、short intのランクよりも大きく、signedcharのランクよりも大きくなっています。

質問は次のとおりです。intよりも小さい型をintで表すべきではないのはなぜですか。また、unsigned intが、intが表すべきではない値を表すことができるのはなぜですか?

前もって感謝します。

4

1 に答える 1

0

aのランクは。よりもshort低くなりますが、同じサイズ(ビット単位)である可能性があります(たとえば、16ビットシステムの場合)。したがって、は。より大きい値を保持できる場合があります。intsizeof(int) == sizeof(short) == 2unsigned shortINT_MAX

質問の2番目の部分については、ほとんど同じ答えunsigned intがあります。anは、intとして表すことができない値を保持できINT_MAX+1ますUINT_MAX。つまり、..。

于 2012-04-26T15:32:21.007 に答える