if(a == (1,2))
和if(a == 1,2)
有什么区别?
#include<stdio.h>
int main()
{
int a = 2;
if(a == (1,2))
printf("Hello");
if(a == 1,2)
printf("World");
return 0;
}
答案 0 :(得分:4)
a == 1,2
等效于(a == 1),2
,原因是operator precedence
由于the comma operator的工作原理,(a == 1),2
将产生2
。并且a == (1,2)
与a == 2
相同。
实际上,您的两个条件就像
if (a == 2)
printf("Hello");
if(2)
printf("World");
仅当a
等于2
时,第一个条件才为true。第二个条件将始终为真(只有零为假)。
答案 1 :(得分:2)
在if语句的两种情况下,都使用逗号运算符
第二个条件等效地可以这样重写
if( ( a == 1 ), 2)
逗号运算符的值是第二个操作数的值。因此,第二个if语句中的条件将始终为true,因为2不等于0。
第一个if语句中的条件可以像这样重写
if(a == 2)
因为逗号运算符的第一个表达式(整数常数1)无效。
因此,仅当a等于2时,if语句的条件才为true。