在C语言中, int a=5,b; b=(++a)+(++a); 输出后为a=7,b=14这不合常
在C语言中,inta=5,b;b=(++a)+(++a);输出后为a=7,b=14这不合常理,为什么b不等于13?第二题,intx=5,y;y=(x++,x);结果输出为...
在C语言中,
int a=5,b;
b=(++a)+(++a);
输出后为a=7,b=14这不合常理,为什么b不等于13?
第二题,
int x=5,y;
y=(x++,x);
结果输出为x=6,y=6,这不太理解。 展开
int a=5,b;
b=(++a)+(++a);
输出后为a=7,b=14这不合常理,为什么b不等于13?
第二题,
int x=5,y;
y=(x++,x);
结果输出为x=6,y=6,这不太理解。 展开
3个回答
展开全部
++a的运算优先级比较高,所以先计算两个++a,然后执行加法;第二题X++,是先右边值赋值给Y,但是会先执行括号左边的X++,变成了6,然后再执行右边单独的x
更多追问追答
追问
在第一题中,先是++a=6,第二个++a=7,两个++a相加为6+7=13,为什么等于14?
追答
++a是对a值本身进行自增1,第一个++a把a变成了6,第二个++a等效于++6,a变成了7,然后对两个a相加,自然就是7+7=14
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一题均为前缀,首先进行+1运算,即b = 7+ 7.
第二题为后缀,y=(x++,x);表达式完毕后x+1 == 6,然后x赋值于y,后面应该还有个printf的输出语句吧,执行printf时输出x = 6 ,y = 6
更多追问追答
追问
但第一题a=5,先自加1等于6,而不等于7。
最终输出不是13而是14
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
由于逗号运算符的优先级最低,在“表达式1,表达式2,...,表达式n,”中,逗号表达式的结果为最后一个表达式的值,即表达式n的值。
如果语句为a=a+b,a-b;则先运算a=a+b,再运算a-b,而整个逗号表达式的值为5,即a-b的值,最后结果为a=11,b=6。
如果语句为a=(a+b,a-b);则先运算a+b,结果无意义,再运算a-b,结果赋值作为逗号表达式的结果赋值给a,最后结果为a=-1,b=6。
如果语句为a=a+b,a-b;则先运算a=a+b,再运算a-b,而整个逗号表达式的值为5,即a-b的值,最后结果为a=11,b=6。
如果语句为a=(a+b,a-b);则先运算a+b,结果无意义,再运算a-b,结果赋值作为逗号表达式的结果赋值给a,最后结果为a=-1,b=6。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询