[英]How assignment from int to char works in C?
當您在C中將int分配給char時會發生什么? 是否總是只忽略左側的多余位?
示例(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
。
通常,這正是發生的情況。 ISO / IEC 9899:2011標准的第6.3.1.3節規定了在這種情況下必須發生的事情:
6.3.1.3有符號和無符號整數
60)規則描述了數學值的算術,而不是給定類型表達式的值。
您的案件屬於上述第2項(因為您的角色被宣布為無符號)。 在典型的計算機算術中,結果將與您描述的完全一致。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.