C++请问 int a = 1; cout << (++a)+(++a)+(++a) << endl; 为何是10
C++请问inta=1;cout<<(++a)+(++a)+(++a)<<endl;为何是10而inta=1;cout<<(a++)+(++a)+(++a)<<endl;...
C++请问 int a = 1; cout << (++a)+(++a)+(++a) << endl; 为何是10
而
int a = 1;
cout << (a++)+(++a)+(++a) << endl;
为何是7 展开
而
int a = 1;
cout << (a++)+(++a)+(++a) << endl;
为何是7 展开
展开全部
++a是先加1再进行计算,a++是计算完之后加1;
===================================================
特别注意:但是无论是a++,还是++a都是用当前a的值去运算~~
====================================================
第一个:
++a是在每次运算前都会自加一次,所以,一开始,a=1,做第一次加法前,先执行括号1,a先自加,a=2,然后执行括号2,a再自加,a=3,此时执行第一次加法,用当前的a去运算,3+3=6;做第二次加法,先执行括号3,a自加,a=4;再做加法,6+4=10;
第二个:
a++是做完运算之后才加1,所以执行第一次加法,先执行括号2,a自加,a=2,然后做第一次加法,2+2=4,接着做第二次加法,先执行括号3,a再自加,a=3,然后执行第二次加法,4+3=7;执行完毕后才执行括号1,a自加,a=4;但是a=4这个值是运算完之后才加的,所以结果是7,不是8
你可以试着敲以下代码验证:
#include <iostream>
using namespace std;
void main()
{
int a=1;
cout<<"情况1:第一次加完"<<(++a)+(++a)<<endl;
a=1;
cout<<"情况2:第一次加完"<<(a++)+(a++)<<endl;
a=1;
cout<<(++a)+(++a)+(++a)<<endl;
cout<<"情况1:加完后a:"<<a<<endl;
a=1;
cout<<(a++)+(++a)+(++a)<<endl;
cout<<"情况2:加完后a:"<<a<<endl;
system("pause");
}
希望对你有帮助
===================================================
特别注意:但是无论是a++,还是++a都是用当前a的值去运算~~
====================================================
第一个:
++a是在每次运算前都会自加一次,所以,一开始,a=1,做第一次加法前,先执行括号1,a先自加,a=2,然后执行括号2,a再自加,a=3,此时执行第一次加法,用当前的a去运算,3+3=6;做第二次加法,先执行括号3,a自加,a=4;再做加法,6+4=10;
第二个:
a++是做完运算之后才加1,所以执行第一次加法,先执行括号2,a自加,a=2,然后做第一次加法,2+2=4,接着做第二次加法,先执行括号3,a再自加,a=3,然后执行第二次加法,4+3=7;执行完毕后才执行括号1,a自加,a=4;但是a=4这个值是运算完之后才加的,所以结果是7,不是8
你可以试着敲以下代码验证:
#include <iostream>
using namespace std;
void main()
{
int a=1;
cout<<"情况1:第一次加完"<<(++a)+(++a)<<endl;
a=1;
cout<<"情况2:第一次加完"<<(a++)+(a++)<<endl;
a=1;
cout<<(++a)+(++a)+(++a)<<endl;
cout<<"情况1:加完后a:"<<a<<endl;
a=1;
cout<<(a++)+(++a)+(++a)<<endl;
cout<<"情况2:加完后a:"<<a<<endl;
system("pause");
}
希望对你有帮助
2011-02-08
展开全部
什么意思?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
怎么感觉第一个答案是9,第二个答案是8?你运行过?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个没标准的,不同的编译器会有不同的结果
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询