2
將int分配給C中的char時會發生什麼?它總是忽略左邊的額外位?從int到char的賦值如何在C中工作?
實施例(4個字節INT):
unsigned char c = 0;
unsigned int i = 500;
c = i; // c is 244
c = i <<24>> 24; //c is 244
i = i <<24>> 24; //i is 244
在二進制,500
是111110100
和244
是11110100
。
@WhozCraig定義了無符號整數溢出(它以UINT_MAX + 1爲模過沖值)。 – 2013-08-17 23:50:17
@ H2CO3你是對的。無符號無法溢出(我應該該死的知道,考慮到我寫了[這個答案](http://stackoverflow.com/questions/13600991/why-is-a-negative-int-greater-than-unsigned-int/ 13601259#13601259))。 – WhozCraig
@WhozCraig不用擔心......一旦我錯誤地陳述(無論腦死亡的原因),編譯Objective-C時代碼生成不需要類型信息。儘管我在幾分鐘內糾正了自己,但有些人仍然堅持認爲我不知道我在說什麼......無論如何。 – 2013-08-17 23:54:22