int main(void)
{
int a=0, b=20;
char x=1, y=10;
if(a,b,x,y)
printf("bye");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上述代码中的"if"条件如何工作?"y"的值是否仅被"if"视为?
Joe*_*oey 17
是的,逗号运算符的值是右操作数.因为没有其他操作数有副作用,这归结为if (y)
.
来自维基百科:
在C和C++编程语言中,逗号运算符(由标记表示)是一个二元运算符,它计算其第一个操作数并丢弃结果,然后计算第二个操作数并返回该值(和类型).
这实际上意味着仅对最终操作数进行真实性评估,先前操作数的结果将被丢弃.
在if(a,b,x,y)
唯一的真实性y
被视为因此无论y
已经评价将被视为真/假.
在您的情况下y
,等于10,true
在C中考虑,因此if
检查也将评估为true
,if
并将输入块.
您可能想在StackOverflow上考虑这个非常受欢迎的问题,因为它的用途(和误用).