if(a ==(1,2))和if(a == 1,2)有什么区别?

时间:2020-02-17 11:02:20

标签: c comma-operator

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;
}

2 个答案:

答案 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。