C语言 带未声明变量的逗号操作符-为什么可以编译?



为什么这段代码没有因为y未声明而抛出编译错误?

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

没有类似int y;的表达。在我的例子中,控制台输出是32764,它似乎只是未初始化的内存。查看第一行的汇编代码,无论, y是否存在都是一样的,即使在print语句中使用了y。

预计会看到

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

This:

int x = 10, y;

是否不是是逗号操作符的实例。,是声明语法的一部分,它允许在同一行上声明多个变量。具体来说,它声明x并将其初始化为10,并声明未初始化的y。它相当于:

int x = 10;
int y;

如果你这样做了:

int x = (10, y);

那么就会有一个逗号操作符的实例和一个未声明的标识符的错误。

相关内容

  • 没有找到相关文章

最新更新