增加两个无符号字符变量,结果为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?如果添加了两个无符号字符变量,应该有溢出,结果应该是3,然后将其应无符号的字符转换3到int 3
答
从不对小于int
的数据类型执行整数运算。例如,对于小于int
例如如果添加了两种类型char
和short int
,则在进行任何算术运算之前将它们提升为int
,并且结果为整数类型。如果其中一个类型碰巧比int大,例如long long int
和int
,那么int将被提升为long long int
,结果为long long int
。
(第4.5/1) - 型炭的右边的值,符号的字符,无符号的字符,短 int或无符号短 INT可以转换为int类型的右值如果INT可以表示 所有源类型的值;否则,源rvalue可以被 转换为类型为unsigned int的右值。