bun*_*nty 8 c syntax operators
我想弄清楚这个程序中的== sign意味着什么?
int main()
{
int x = 2, y = 6, z = 6;
x = y == z;
printf("%d", x);
}
Run Code Online (Sandbox Code Playgroud)
Bil*_*3rd 20
该==
运营商测试是否相等.例如:
if ( a == b )
dosomething();
Run Code Online (Sandbox Code Playgroud)
并且,在您的示例中:
x = y == z;
Run Code Online (Sandbox Code Playgroud)
如果y等于z,则x为真(1).如果y 不等于z,则x为假(0).
新手C程序员犯的一个常见错误(以及一些非常有经验的人犯错误)是:
if ( a = b )
dosomething();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,b被分配给a然后被评估为布尔表达式.有时程序员会故意这样做,但这是不好的形式.另一个阅读代码的程序员不会知道它是故意(很少)还是无意中(更有可能).一个更好的结构将是:
if ( (a = b) == 0 ) // or !=
dosomething();
Run Code Online (Sandbox Code Playgroud)
这里,b被分配给a,然后将结果与0进行比较.意图很清楚.(有趣的是,我和C#程序员一起工作过,他们从来没有写过纯粹的C,也无法告诉你这是做什么的.)
它是"等于"运算符.
在上面的例子中,x
分配了相等test(y == z
)表达式的结果.因此,如果y
等于z
,x
则设置为1
(true),否则设置为0
(false).因为C(pre-C99)没有布尔类型,所以表达式求值为整数.