【问题标题】:Comma operator with undeclared variable - why does it compile?带有未声明变量的逗号运算符 - 为什么编译?
【发布时间】:2022-11-14 12:19:12
【问题描述】:

为什么这段代码不会因为 y 未声明而引发编译错误?

int x = 10, y;
printf("%d", y);

没有像int y; 这样的表达。在我的例子中,控制台打印出来的是32764,这似乎只是未初始化的内存。看第一行的汇编代码,有没有, y都是一样的,即使在print语句中使用了y。

期待看到

error: use of undeclared identifier 'y'    printf("%d", y);

【问题讨论】:

    标签: c comma-operator


    【解决方案1】:

    这个:

    int x = 10, y;
    

    不是逗号运算符的一个实例。 , 是声明语法的一部分,它允许在同一行上声明多个变量。它相当于:

    int x = 10;
    int y;
    

    如果你这样做了:

    int x = (10, y);
    

    然后你会有一个逗号操作符的实例和一个未声明标识符的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      • 2010-09-08
      相关资源
      最近更新 更多