有趣代码:
#include <stdio.h>
int main()
{
int i=900;
char x=150;
printf("i/c=%d\n",i/x);
return 0;
}
一看代码,输出肯定会是6。
但对於C,它可不是这样理解。
问题在於char x=150,这里的char,编译器会预设signed。
signed char的值最大只能到127
所以x在编译器的“帮助下”,x会变成负数!
所以,以後要注意数据的范围。
而且,不同编译器有不同的预设,切记。
Reference:
[1] https://wiki.sei.cmu.edu/confluence/display/c/SEI+CERT+C+Coding+Standard
[2] 编写高质量代码.改善C程序代码的125个建议