c语言(a++)+(a++)+(a++)和(++a)+(++a)+(++a)
展开全部
a=3时,(a++)+(a++)+(a++)=9毫无疑问。
(++a)+(++a)+(++a)有点情况:有些编译器解释先算3个++a,再加起来,就为18;而有的编译器却先把前两个算出来为10赋给一个中间变量,再算最后一个++a为6,再把二者加起来等于16。
(++a)+(++a)+(++a)有点情况:有些编译器解释先算3个++a,再加起来,就为18;而有的编译器却先把前两个算出来为10赋给一个中间变量,再算最后一个++a为6,再把二者加起来等于16。
更多追问追答
追问
我用的是xcode 算到的就是12和15啊 这是为毛!!!
追答
如果操作无误的话,你那编译器的解释显然不符合C关于前++后++的基本规定。显然是一项一项解释的,前者3+(3+1)+(4+1)=12,后者(3+1)+(4+1)+(5+1)=15。C规定,表达式中的前++在变量参与运算前求出,后++在变量参与运算后求出。所以你的编译器的解释不符合这个元规定。不过这种边缘化语句C没有统一规定到底如何解释,所以你的编译器的开发者或许也有解释的理由。尽管你已采优了,但说两句无妨……
展开全部
++a是在用变量a前将变量a增加1,
a++是在用变量a后将变量a加1,所以
(a++)+(a++)+(a++)比(++a)+(++a)+(++a)的结果少3。。。
可以这么翻译这段语句:
sum=0;
a=3
(++a)+(++a)+(++a)
翻译过来就是
a=a+1;
sum = sum+a;//a=4
a=a+1;
sum = sum+a;//a=5
a=a+1;
sum=sum+a;//a=6
结果就是4+5+6 =15
(a++)+(a++)+(a++)
翻译过来就是
sum=sum+a;//a=3
a=a+1;
sum=sum+a;//a=4
a=a+1;
sum=sum+a;//a=5
a=a+1;
结果就是3+4+5 =12
a++是在用变量a后将变量a加1,所以
(a++)+(a++)+(a++)比(++a)+(++a)+(++a)的结果少3。。。
可以这么翻译这段语句:
sum=0;
a=3
(++a)+(++a)+(++a)
翻译过来就是
a=a+1;
sum = sum+a;//a=4
a=a+1;
sum = sum+a;//a=5
a=a+1;
sum=sum+a;//a=6
结果就是4+5+6 =15
(a++)+(a++)+(a++)
翻译过来就是
sum=sum+a;//a=3
a=a+1;
sum=sum+a;//a=4
a=a+1;
sum=sum+a;//a=5
a=a+1;
结果就是3+4+5 =12
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a=3时,
因为a++是变量a先参与其他运算再加1,所以(a++)+(a++)+(a++)实际上是3+3+3=9,运算后a的值是6.
++a则是先求a=a+1,然后再做其他运算,所以(++a)+(++a)+(++a)实际上是5+5+6=16,运算后a的值是6.
因为a++是变量a先参与其他运算再加1,所以(a++)+(a++)+(a++)实际上是3+3+3=9,运算后a的值是6.
++a则是先求a=a+1,然后再做其他运算,所以(++a)+(++a)+(++a)实际上是5+5+6=16,运算后a的值是6.
追问
为什么是5+5+6??
追答
自加连加运算,是从右向左,先算后两个++a然后相加,就是5+5=10,然后再做一个++a,就是再加6
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a初值是多少
更多追问追答
追问
抱歉 忘了写 初值是3
追答
#include
main()
{
int a=3,b,c;
b=(a++)+(a++)+(a++);
printf("%d\n",b);
}我运行了一下是9
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询