这个数组初始化是如何进行的

How is this array initialization happening?

本文关键字:何进行 初始化 数组      更新时间:2023-10-16

可能重复:
C++Comma操作员

我正在用初始化阵列

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;

增加CCD_ 4并将CCD_。

你以前会看到这一点,但不一定意识到:

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

原因相同:

int x = (1,3);
assert(x==3);

发生。

逗号运算符就是这样工作的。它"返回"最后一个表达式,同时(可能)对两者进行求值。