类型转换bug
int a = -10;
unsigned int b = 5;
if (a > b) {
printf(“big\n”):
} else {
printf(“small\n”);
}
有经验的人一看上面的代码,就知道有问题,“>”会让int型降为unsigned int,结果会是打印出“big”,因为-10转成unsigned int肯定比5大多了。
虽然是个小bug,却是第一次撞上,因为我以前如果拿变量做计数,通常是给size_t类型,所以还真不容易遇到。查了一下gcc的文档,想要针对这种情况报warning,必须加一个编译选项:
-Wsign-compare
也可以用
-Wextra
但是-Wextra报错就会特别多,连main函数里的argc和argv没有被用到也会报出来,嗯,适合重口味的开发者。
相关文章
- Intel软件大会(2011)归来 - 03 28, 2011
- Intel软件技术大会(2010)归来 - 04 02, 2010
- 高效内存拷贝? - 11 13, 2009
楼主写的是什么程序
两台机器间收发不定长消息
怎么我试了一下打开编译选项-Wsign-compare不行.
难道是gcc的版本不同?我这里 gcc-4.1.2 是可以的