c++ - 这个数组初始化是如何发生的?

标签 c++

<分区>

Possible Duplicate:
C++ Comma Operator

我正在初始化一个数组

int main()
{
    int arr[3]= { (1,3), 2, 4 };
    cout << arr[0] << " " << arr[1] << " " << arr[2] << endl;
}

我以为它会给出编译时错误,但它运行良好。该数组用值 3,2,4 初始化,输出也是 3 2 4

谁能解释一下这里发生了什么?

最佳答案

您正在查看那里的逗号运算符。基本上,表达式:

1,7

将评估 1 但“返回”7。

你拥有的那种特殊形式(以及我上面的)不是那么有用,但你可以做这样的事情:

x = a++, 1;

同时增加 a 并将 x 设置为 1(有用性来自副作用)。

你之前可能已经看到了这一点,但不一定没有意识到:

for (i = 0, j = 0; i < 4; i++, j++) ...

关于c++ - 这个数组初始化是如何发生的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9483405/

相关文章:

c++ - LCS 的二维数组表

c++ - CMake将C++参数传递给nvcc

c++ - 此代码如何显示此输出?

c++ - 如何对字符串使用通配符(匹配和替换)?

c++ - c++遇到菱形问题怎么办

c++ - 从 DWORD 中提取 lo 和 hi 字时为什么需要二进制移位?

c++ - C++中使用自动说明符推导纯右值类型时的判别

c++ - 隐式实例化变量模板的动态初始化顺序

c++ - 编译器找不到jpeg和png库

c++ - 如何将 sysroot 与 autoconf 一起使用?