我有以下代码,在我看来它应该总是输入if语句的真实部分,但是,超过120,它似乎开始执行else子句.为什么会这样?
char x; for (i=0;i<256;i+=10) { x=i; if (x==i) printf("%d true\n",i); else printf("%d false\n",i); }
输出是:
0 true 10 true : all numbers from 20 to 100 are true 110 true 120 true 130 false 140 false : all numbers from 150 to 230 are false 240 false 250 false
解决方法
使用char关键字时,默认情况下,编译器可能使用signed char.有符号字符的范围通常为-128到127,而int的范围要大得多.除了典型的台式PC之外,更多深奥的硬件可能会使用其他值.