代码之家  ›  专栏  ›  技术社区  ›  Navdeep Singh

C中表达式的执行逻辑是什么?[副本]

  •  -3
  • Navdeep Singh  · 技术社区  · 9 年前

    假设我在C中有一对表达式。提供了不同的输出。

    int i =2,j;
    j= i + (2,3,4,5);
    printf("%d %d", i,j);
    //Output= 2 7
    
     j= i + 2,3,4,5;
     printf("%d %d", i,j);
     //Output 2 4
    

    1 回复  |  直到 9 年前
        1
  •  4
  •   Gaurav Sehgal    9 年前

    Comma 运算符通过计算所有表达式并返回最后一个表达式来工作。

    j= i + (2,3,4,5);
    

    变成

    j= i + (5); //j=7
    

    在第二个表达式中,赋值运算符优先于逗号运算符,因此

    j= i + 2,3,4,5;
    

    变成

    (j= i + 2),3,4,5; //j=4