warning: suggest parentheses around assignment used as truth value

使用C代码遍历获得内容的时候,我写了如下的代码

...
MYSQL_RES *mysqlres = mysql_store_result(&conn);
MYSQL_ROW row;
while(row = mysql_fetch_row(mysqlres))
{
....
}

然后gcc报warning

dbcon.cc:103:38:
warning: suggest parentheses around assignment used as truth value [-Wparentheses]

前文高亮代码意图是, 首先MYSQL_ROW row 赋值为函数mysql_fetch_row的返回值,然后对row的值判断,若非0,则执行while的内容,否则跳出循环. 如有人所说,”It’s just a ‘safety’ warning”,前文的内容是正确但不良好的习惯. 有人说这是和

while(row == mysql_fetch_row(mysqlres))

区别开来.不很确定,但无论如何, 这不是一个值得提倡的写法…

消除这个warning很简单,将该行修改为

while((row = mysql_fetch_row(mysqlres)) != NULL)

或者

while((row = mysql_fetch_row(mysqlres)))

参考这篇