c++输出n++,n--,++n,--n方式不同结果为什么不一样?

#include<iostream>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
int t;
t=n;
cout<<n++<<" ";
cout<<n--<<" ";
cout<<++n<<" ";
cout<<--n<<endl;
n=t;
cout<<"n:"<<n++<<" "<<n--<<" "<<++n<<" "<<--n<<endl;
}
}

第10到13行这4条输出,每输出一条语句之前或之后,都进行了++或--的运算
比如第10行等同于cout<<n<<" ";n++;
第12行等同于n++;cout<<n<<" ";

第15行这一条输出,则是要在整个输出执行之前或之后进行++或--运算
等同于
n++;n--;cout<<"n:"<<n<<" "<<n<<" "<<n<<" "<<n<<endl;n++;n--;
所以这一行输出的4个n的值将是同一个值
(不过这个视编译器不同而不同,输出这个结果只是针对Visual Studio而已,使用其它编译器就难说了)追问

我用的codeblock
比如输入n是1
但输出的第一行结果是1 2 2 1
第二行是 0 1 1 0
和你的不一样啊 ?

追答

第一行 1 2 2 1 那是肯定的(所有的编译器都是这结果)
但第二行就难说了,不同的编译器结果不一样的
如果把这条语句看做整体,就输出4个1
如果是把<<看作右结合,将输出0 1 1 1
如果把<<看作左结合,将输出0 1 1 0

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-30
for(n=1;((l-n>0)&&(l-n<10));n++)
你的结果第一个是l为29,如果改成这样,29-n第一次的时候就不满足条件,不能进入下一次循环,这里只要l>11根本就不会从n=1一直向下循环,输出的那段肯定就不会执行……
第2个回答  2020-06-20
第10到13行这4条输出,每输出一条语句之前或之后,都进行了++或--的运算
比如第10行等同于cout<
追问:
我用的codeblock
比如输入n是1
但输出的第一行结果是1
2
2
1
第二行是
0
1
1
0
和你的不一样啊

追答:
第一行
1
2
2
1
那是肯定的(所有的编译器都是这结果)
但第二行就难说了,不同的编译器结果不一样的
如果把这条语句看做整体,就输出4个1
如果是把<<看作右结合,将输出0
1
1
1
如果把<<看作左结合,将输出0
1
1
0
评论
0
0
加载更多
相似回答