我char
通过简单的加法并测试数字何时变为负数来找到a的最大值:
#include<stdio.h>
/*find max value of char by adding*/
int main(){
char c = 1;
while(c + 1 > 0)
++c;
printf("Max c = %d\n",(int)c); /*outputs Max c = -128*/
return 0;
}
该while
回路测试未来,所以第一次c+1
是负的,突破我们打印的价值c
。但是,编程输出负数!
为什么该程序不输出127
?
在while条件中发生了隐式强制转换,这导致比较在ints而不是char上进行。
如果您将其更改为
while((char)(c + 1) > 0)
++c;
然后它将打印127。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句