当前位置:C++技术网 > 资讯 > VS2017提示警告suggest parentheses...

VS2017提示警告suggest parentheses...

更新时间:2017-11-10 12:44:37浏览次数:1+次

    在使用mysql数据库编程时,代码如下:
while(row = mysql_fetch_row(pres))
{
    //....
}
    VS2017提示一大堆的警告,警告的原文是:
warning: suggest parentheses around assignment used as truth value
    翻译过来就是,建议用圆括号括起来布尔值。如果你能够看懂这个英文的警告的意思,其实也就很明确知道怎么改代码了。代码这样改:
while((row = mysql_fetch_row(pres)))
{
    //....
}
    只要加一个括号就了事了。不然警告显示着真是难受。警告并不是错误,你可以忽略它的存在。不过还是弄明白这个警告是为什么出现的吧。
    在逻辑判断里面,将==用成=是很常见的现象,结果会导致错误的逻辑。因为判断的结果将永远是一个。当然不一定是永真,因为可能赋值的结果是0。所以在写代码时很多人推荐反着来,如下:

    

int a=1;
if(0=a){//...}//此时会语法报错
if(a=0){//...}//此时语法没错,但是逻辑却错了。
if((a=0)){//...}//此时语法没错,加上括号,表示我故意这样做的,我知道这个没有错误,不要在这里提示警告了

    

    其实在Windows中,这个警告并不会出现,而是在GCC中才会出现警告。告诉你此时虽然语法正确,但是很可能逻辑错误。所以建议你用圆括号将赋值语句括起来,表示你已经知道这个问题。括号括起来并不能将数值变为逻辑值,只是告诉编译器,朕知道了!我就是要在判断里用“0是假,非0即真”,而不是用布尔值。
    好了,说到这也就完了。