在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的值应该不起作用?

可能是因为您的charsigned并且可以保存-128到127之间的值。通过使用

 char c = a + b; 

你有一个溢出和溢出的signed char导致未定义的行为。 您可以使用unsigned char来解决问题:

 unsigned char c = a + b;