今天我发现了以下内容:
#include <stdio.h>
int main(){
char x = 255;
int z = ((int)x)*2;
printf("%d\n", z); //prints -2
return 0;
}
基本上,我之所以出现溢出的情况是因为等号右侧的操作数确定了大小限制?在乘法之前将其转换为int为什么不起作用?如果我使用“long”和“long long int”(c99),那么我会得到类似的行为。通常建议不要使用不同大小的操作数进行算术运算吗?