在gcc中,我看到了
int a=(b=0);
也指定0。我还了解到,赋值是一个表达式,其值和赋值从右到左关联。
现在可以预期,当用作条件的一部分时,a = 0将被评估为false。但事实并非如此。 if(a=0)
始终评估为true。有人可以解释这背后的原因还是我错过了一些明显的东西?
答案 0 :(得分:3)
现在可以预期,当用作条件的一部分时,a = 0将被评估为false。
确实如此。
#include <stdio.h>
int main()
{
int a = 456;
if (a=0)
puts("(a=0) evaluates to true");
else
puts("(a=0) evaluates to false");
return 0;
}
$ ./a.out
(a=0) evaluates to false
无论你用什么来测试你的假设都一定是不正确的。