关于c语言,请教

01#include<stdio.h>02voidmain()03{04inta,b,s;05a=5;b=5;06s=a+b;07printf("%d,%d,%d\n",... 01 #include <stdio.h>
02 void main()
03 {
04 int a,b,s;
05 a=5;b=5;
06 s=a+b;
07 printf("%d,%d,%d\n",a,b,s);
08 s=a+++a+++a++;
09 printf("%d,%d\n",a,s);
10 s=++a+b;
11 printf("%d,%d,%d\n",a,b,s);
12 s=--a+b;
13 printf("%d,%d,%d\n",a,b,s);
14 s=a--+b;
15 printf("%d,%d,%d\n",a,b,s);
16 s=-a+++-b;
17 printf("%d,%d,%d\n",a,b,s);
}
程序中第8行,书上说应该理解为a后缀自加进行3次,得到a的值为8,整个表达式的值为a自加前的值相加,也就是三个5相加,第7行输出的s为15,但我觉得第8行应该这样理解,s=(a++)+(a++)+(a++);第一个括号过后,a的值为6但第一个括号的值为5,第二个括号过后,a的值为7但第二个括号的值为6 ,第三个括号过后,a的值为8但是第三个括号的值为7,所以s的值为5+6+7,应该为18,怎么会是三个5相加呢,请教高手,谢谢了,我是新手,没有什么财富悬赏之类的,原谅了
展开
 我来答
zhangxueshuai1
2011-04-09 · TA获得超过226个赞
知道答主
回答量:125
采纳率:0%
帮助的人:0
展开全部
有些系统(TurboC和MSC)把5作为所有表达式a的值
因此3个a相加,得到15,在求出表达式的值后再实现自加3次,a的值变为8
百度网友29f7f58
2011-04-09 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:155
采纳率:0%
帮助的人:89.3万
展开全部
这条语句是在你执行完加的运算之后,a才自加3次,就是说,s=(a++)+(a++)+(a++)你这样理解是没错的,不过应该是这样,s=a+a+a; a++; a++; a++;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
钊默Pu
2011-04-09 · TA获得超过488个赞
知道答主
回答量:20
采纳率:0%
帮助的人:11.2万
展开全部
这里你可能漏掉了一点,后缀的自加是该条语句完成后再自加,你所写的第八条语句还没完成所以不能本身就自加,你可以在第八条语句完成后自加,即第八条语句完成后a=8
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一变班爱麻啊堡0J
高粉答主

2020-01-13 · 醉心答题,欢迎关注
知道答主
回答量:11.4万
采纳率:2%
帮助的人:5508万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-04-09
展开全部
自加运算符的优先级在+之后,也就是说先运算的是s=a+a+a,然后运算三次a++
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式