在这个程序中,我试图将字符变量相加的结果分配给一个整数变量。我确保加法的大小大于 255。所以我希望右边的表达式溢出,即使结果是 362,由于溢出,我希望在将结果转换为106后分配106 int
,而不是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);
}