注册 登录
编程论坛 C++教室

第五句 int y=2+(x+=x++,x+8,++x); 不太明白,求帮我简单的说明一下

蛤蟆001 发布于 2016-09-23 17:29, 2204 次点击
#include<iostream>
using namespace std;
int main(){
    int x=5;
    int y=2+(x+=x++,x+8,++x);
    cout<<y<<endl;
    return 0;
}
4 回复
#2
书生牛犊2016-09-23 17:41


逗号运算符的结果取右边的,所以  int y=2+(++x);  那么x的值在这个时候是多少就很重要了,而x+8是这行代码中唯一没软用的。
x+=x++;//拆开来变成下面这两行,我相信你应该没有异议把。
x+=x;//x==10
x++;//x==11

int y=2+(++x)=2+12=14;
#3
蛤蟆0012016-09-23 22:24
谢谢
#4
rjsp2016-09-23 22:29
x+=x++
属于未定义行为
#5
StadyC2016-10-14 10:51
这种问题不要纠结,一条算式之中,改变两次以上同一变量,属于未定义行为。麻烦看看你必须知道的495个C语言问题。C Primer Plus就已经说果这个问题
1