有代码:
#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变量,应该会溢出,result应该是3,然后把unsigned char 3转成int 3。
最佳答案
加法运算会先promote其操作数为 int
,然后再进行加法运算。这就是 C 的工作原理。如果要截断,则需要将其分配回更窄的类型,例如 unsigned char
。
关于c++ - 添加两个 unsigned char 变量,结果为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7538448/