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