[英]Adding two unsigned char variables and result is int
有代碼:
#include <iostream>
int main(){
unsigned char a = 4, b = 255;
int g = (unsigned char)a + (unsigned char)b;
std::cout << g << std::endl;
return 0;
}
結果:
259
為什么結果是259而不是3? 如果添加了兩個unsigned char變量,則應該有溢出,結果應為3,然后它應該從unsigned char 3轉換為int 3。
加法操作將首先推動其操作數int
在做加法之前。 這就是C的工作原理。 如果要截斷,則需要將其分配回更窄的類型,例如unsigned char
。
從不對小於int
數據類型執行整數算術。 例如,對於小於int
類型,例如,如果添加了兩個類型char
和short int
,則在任何算術運算之前將它們提升為int
,結果為整數類型。 如果其中一個類型碰巧大於int,例如long long int
和int
則int被提升為long long int
,結果為long long int
。
(§4.5/ 1) - 如果int可以表示源類型的所有值,則可以將char,signed char,unsigned char,short int或unsigned short int類型的rvalue轉換為int類型的rvalue。 否則,源rvalue可以轉換為unsigned int類型的rvalue。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.