int main() {
int x = 6;
x = x+2, ++x, x-4, ++x, x+5;
std::cout << x;
}
// Output: 10
Run Code Online (Sandbox Code Playgroud)
int main() {
int x = 6;
x = (x+2, ++x, x-4, ++x, x+5);
std::cout << x;
}
// Output: 13
Run Code Online (Sandbox Code Playgroud)
请解释.
Arm*_*yan 15
由于,具有较低的优先级比=.实际上,,所有运营商的优先级最低.
第一种情况:
x=x+2,++x,x-4,++x,x+5;
Run Code Online (Sandbox Code Playgroud)
这相当于
(x=x+2),(++x),(x-4),(++x),(x+5);
Run Code Online (Sandbox Code Playgroud)
因此,x变为6 + 2 = 8,然后它递增并变为9.下一个表达式是无操作,即x-4计算并丢弃值,然后再次递增,现在x是10,最后是另一个无操作.x是10.
第二种情况:
x=(x+2,++x,x-4,++x,x+5);
Run Code Online (Sandbox Code Playgroud)
这相当于
x=((x+2),(++x),(x-4),(++x),(x+5));
Run Code Online (Sandbox Code Playgroud)
x+2计算,然后x递增并变为7,然后x - 4计算,然后x再次递增并变为8,最后x+5计算为13.该操作数,即最右边的操作数,作为整个逗号表达式的结果.此值已分配给x.
x是13.
希望很清楚.
而且,正如其中一条评论所暗示的那样 -
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |