我目前正试图在c中添加2个字符。
char a = 127;
char b = 127;
char c = a + b;
printf("%d\n", c);
打印出4294967278的,我实际上遇到了问题,我将2个数字加在一起,结果的ASCII值大于127,这里发生了什么?不是8位或256位可能的数字?所以添加小于256的值应该不起作用吗?
答案 0 :(得分:2)
可能是因为您的char
是signed
并且可以保存-128到127之间的值。使用
char c = a + b;
您有signed char
溢出和溢出会导致未定义的行为。您可以使用unsigned char
来解决问题:
unsigned char c = a + b;