gpt4 book ai didi

c - 声明如何影响逗号运算符?

转载 作者:太空狗 更新时间:2023-10-29 15:17:36 25 4
gpt4 key购买 nike

以下代码无法编译。

int n;
int x=1, n++; //compiler error

error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘++’ token

如果我们分开 x 的声明,程序可以正常编译。

int n, x;
x=1, n++;//no error

为什么会这样?

最佳答案

x=1,n++;

是表达式语句,,这里是逗号操作符。然而,

int x=1,n++;

是一个声明,不是表达式,,在这里不被解释为逗号运算符。

C11 §6.7 Declarations

declaration:
declaration-specifiers init-declarator-listopt ;
static_assert-declaration

declaration-specifiers:
storage-class-specifier declaration-specifiersopt
type-specifier declaration-specifiersopt
type-qualifier declaration-specifiersopt
function-specifier declaration-specifiersopt
alignment-specifier declaration-specifiersopt

init-declarator-list:
init-declarator
init-declarator-list , init-declarator // comma

init-declarator:
declarator
declarator = initializer

声明中的逗号只是一个分隔符。由于 n++ 不是有效的初始化声明符,因此编译器会报告错误。

关于c - 声明如何影响逗号运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32110189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com