gpt4 book ai didi

c++ - 为什么用逗号进行双重初始化是非法的?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:51:37 24 4
gpt4 key购买 nike

我有三个代码片段。这个:

1,7; //yes, that's all the code

编译正常。这个:

double d = (1, 7);

也可以编译。然而这个:

double d = 1, 7;

编译失败。 gcc-4.3.4 说

error: expected unqualified-id before numeric constant

和 Visual C++ 10 说

error C2059: syntax error : 'constant'

为什么会有这样的差异?为什么不是所有三个都使用 编译, 在所有三个中具有相同的效果?

最佳答案

在前两种情况下,语句使用 C++ 的 comma operator

在后一种情况下,逗号被用作分隔变量,编译器希望您声明多个标识符;此处未将逗号用作运算符。

最后一个案例类似于:

float x,y;
float a = 10, b = 20;

当你这样做时:

double d = 1, 7;

编译器需要一个变量标识符而不是一个数字常量。因此 7 在这里是非法的。

但是当你这样做时:

double d = (1,7);

正在使用普通的逗号运算符:1 被计算并丢弃,而 7 存储在 d 中。

关于c++ - 为什么用逗号进行双重初始化是非法的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8519884/

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