为什么两种情况下的行为不同1.int i=1,2,3;和第二.int i;i=1,2,3;

Why different behavior in two cases 1st. int i = 1,2,3; and 2nd. int i; i = 1,2,3;

本文关键字:int 两种 情况下 为什么      更新时间:2023-10-16

使用GCC编译器,在C程序中使用以下两种运算符,观察到不同的行为。

1.

 int i = 1,2,3;
 printf("%d",i);                     // this will give compile time error

而且,

2.

int i;
i = 1,2,3;
printf("%d",i);    // Its output will be 1.

在第一种情况下,编译器给出错误"error:在数字常量之前应为标识符或"(""。在第二种情况下,没有错误,输出为1。有人能在这里详细解释一下这两种情况下的编译器行为吗?编译器如何解释这两个语句?

提前感谢您的意见。

  1. 在第一种情况下,逗号分隔相同类型的几个变量的声明和初始化

    int i = 1, j = 2, k = 3;
    

    您可以添加圆括号来告诉编译器这是一个表达式。

    int i = (1, 2, 3);
    

    如果你把它们组合起来,就更容易理解为什么逗号在没有括号的情况下是模糊的:

    int i = (1, 2, 3), j = 4, k = 5;
    
  2. 在第二种情况下,逗号分隔3个表达式。

    (i = 1), 2, 3