因为您的编译器默认char
为signed char
.因此它的值范围是-128到127,而递增127则触发环绕.如果要避免这种情况,请明确,并将变量声明为unsigned char
.
请注意,要正确地做到这一点,你也要改变printf
; 你打印为有符号int
值(%d
); 要100%类型正确,您需要匹配类型,因此格式代码应该是%hhd
有符号的char,或者%hhu
是unsigned char.%d
由于varargs的推广规则会有效,但是一直使用它是一个坏习惯%d
; 当打印unsigned
用%d
,你的系统可能会成功,但它会显示大的数值为负,迷惑你.