gcc编译警告:warning: suggest parentheses around assignment used as truth value

错误描述

warning: suggest parentheses around assignment used as truth value

(警告:建议使用赋值周围的括号作为真值)

错误示例

DIR *imagedir = NULL;
struct dirent *dirinfo = NULL;
while(dirinfo = readdir(imagedir))  

原因

通常在指针判断中出现,
由于在C语言中,非0即代表TRUE,反之为FALSE,上面的语句以dirinfo的值用于最后的判断。
但是由于长期的编程实践告诉我们,人们经常在赋值 “=” 和 大小判断 “” 的使用上出现手误,
所以gcc编译器为此要求我们明确地告诉编译器它是 “=” 而不是 “”,是故意,而非手误。
告诉你此时虽然语法正确,但是很可能逻辑错误。所以建议你用圆括号将赋值语句括起来,表示你已经知道这个问题。括号括起来并不能将数值变为逻辑值。

正确示例

DIR *imagedir = NULL;
struct dirent *dirinfo = NULL;
        
while((dirinfo = readdir(imagedir)))   
//修改后,消除警告
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泡沫o0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值