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