天天看點

warning: suggest parentheses around assignment used as truth value

while(psStrtok = strsep(&p, " ")) //這個是我自己編譯告警的那句話

這句是非常經典、簡潔的指針操作語句,但是它在gcc編譯器下居然會出現警告。

warning: suggest parentheses around assignment used as truth value

理由:在C語言中,非0即代表TRUE,反之為FALSE。上面的語句以*s的值用于最後的判斷。但是由于長期的程式設計實踐告訴我們,人們經常在“=”和“==”的使用上出現手誤,是以gcc編譯器為此要求我們明确地告訴編譯器它是“=”而不是“==”,是故意,而非手誤。

既然我們的語句如上所示,并非要用“==”,是以我們隻需修改成下列樣式即可(即加上括号):

while((psStrtok = strsep(&p, " ")))

本文轉自:http://www.cppblog.com/mymsdn/archive/2008/08/25/warning-suggest-parentheses-around-assignment-used-as-truth-value.html