类型转换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没有被用到也会报出来,嗯,适合重口味的开发者。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值