文章出处:http://blog.csdn.net/zhaoxiatengkong_1/article/details/6443824
今天在写词法分析器的时候,用了这么一句代码:
if (atype=search(alphatp,1))
结果在gcc编译器下居然发出了警告: warning:suggest parentheses around assignment used as truth value
后来在网络上找了一下,看人家是这么解释的,即在C语言中,非0代表TRUE,反之为FALSE。atype值是用于最后的判断用的,但是由于长期的编程实践告诉我们,人们经常在"="和“==”的使用上出现手误,所以gcc编译器为此要求我们明确地告诉编译器它是"="而不是"==",是故意,而非手误。
if ( ( atype=search(alphatp, 1) ) ) 即加一个括号括起来就可以了。