在这个程序中,我试图将字符变量的添加结果分配给整数变量。我已经确定添加的大小大于255。所以我希望表达式溢出在右边甚至虽然结果是362,但由于溢出,我希望在结果转换为int
之后分配 106 ,而不是 362 。但奇怪的是 362 正在分配。
无论字符是有符号还是无符号,结果都是相同的。为什么没有溢出并且 362 被分配?因为在添加期间右侧没有整数且所有操作数都是字符,我不希望它们被提升为int
。
#include<stdio.h>
int main(void)
{
unsigned char ch1='z',ch2='x'; //Same result for signed too
int sum=ch1+ch2+ch2;
printf("%d",sum);
}
答案 0 :(得分:1)
所有计算以整数精度开始最小值,因此您的语句将如下所示
int sum=(int)ch1+(int)ch2+(int)ch2;