int main(void)
{
int a=0, b=20;
char x=1, y=10;
if(a,b,x,y)
printf("bye");
return 0;
}
上述代码中的“if”条件如何工作?“y”的值是否仅由“if”考虑?
int main(void)
{
int a=0, b=20;
char x=1, y=10;
if(a,b,x,y)
printf("bye");
return 0;
}
上述代码中的“if”条件如何工作?“y”的值是否仅由“if”考虑?
是的,逗号运算符的值是正确的操作数。因为其他操作数都没有副作用,所以归结为if (y)
.
,
(逗号)运算符分隔表达式。如果将多个值括在圆括号中,则将圆括号中的最后一个值分配给变量。
e.g a=(x,y,z);
then a=z;
而如果,
a=x,y,z;
然后上面的表达式被评估为(a=x);
请参考这个。
正如乔伊上面所说,这仅是
if (y)
....
重要的是要注意,如果您的代码已阅读:
int main(void)
{
int a=0, b=20;
char x=1, y=10;
if(a++,b++,x++,y)
printf("%d, %d, %d, %d\n", a, b, (int)c, (int)y);
return 0;
}
输出本来是
1, 21, 2, 10
所有增量都将被执行,但为了评估条件
(a++,b++,x++,y)
唯一重要的是最后一个,即y