0

在这个程序中,我试图将字符变量相加的结果分配给一个整数变量。我确保加法的大小大于 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);

}
4

1 回答 1

1

所有计算都以整数精度开始,因此您的语句将如下所示

int sum=(int)ch1+(int)ch2+(int)ch2;
于 2013-05-16T11:40:21.587 回答