可能重复:
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
。
有人能解释一下这里发生了什么吗?
答案 0 :(得分:4)
你正在看那里的逗号运算符。基本上,表达式:
1,7
将评估1
,但“返回”7。
你所拥有的那种特殊形式(以及我的上述形式)并不是那么有用,但你可以做以下事情:
x = a++, 1;
同时增加a
并将x
设置为1(实用性来自副作用)。
你以前会看到这个,但却没有意识到:
for (i = 0, j = 0; i < 4; i++, j++) ...
答案 1 :(得分:2)
同样的原因:
int x = (1,3);
assert(x==3);
发生。
这就是逗号运算符的工作方式。它“返回”最后一个表达式,同时(可能)评估它们。