【发布时间】:2018-03-22 01:28:01
【问题描述】:
考虑一下语句:
int a;
a = 1,2,3;
cout<<a; // prints a = 1
我咨询了this 网站。现在发生这种情况是因为 comma 运算符的优先级最低。所以它就像(a=1),2,3。但出于好奇,我想知道这之后会发生什么,编译器是否忘记了剩余的数字2 和3。因为我认为如果考虑它们,那么可能首先是 1,然后是 2,然后是 3 将被初始化为a(类似于a = (1,2,3))。请告诉我这里到底发生了什么?
【问题讨论】:
-
当编译器遇到表达式
2和3时,它会做同样的事情,就好像你刚刚自己写了2;。也就是说,它什么都不做。 -
在此上下文中,
a=1,2,3;等效于a=1; 2; 3;。2;和3;无效。 -
你有 2 和 3 的地方的表达式将被评估,这可能会有副作用。
标签: c++ operators comma comma-operator