這個問題之前被問過,但我仍然困惑。UINT_MAX是否將所有位都設置爲1?
我知道
unsigned int a = -1;
將UINT_MAX
。但這不是因爲所有的位都被設置了。 C11表示
如果新類型是無符號的,所述值是通過反覆增加或 減去一個小於能夠在該新型 來表示直到該值是在新的範圍中的最大值更轉換鍵入
因此,可以說UINT_MAX
是100(我知道這應該是大於2^16-1但讓我們忽略這個現在)
unsigned int a = -1; // will be
unsigned int a = -1 + UINT_MAX + 1; // 100 = UINT_MAX
標準只說:UINT_MAX >= 2^16-1
。但是它說它應該是2^n-1嗎?
C++中的答案也不同嗎?
我認爲這個標準主要留下未指定值(或平臺相關)的確切位表示。那裏有一些非常奇怪的架構。 –