在C语言的环境下,a=5;b=a++;c=--a-b++;d=(a++)-(++b)+c--;结果是多少,怎么算?

 我来答
百度网友df00a43
推荐于2017-10-14 · TA获得超过157个赞
知道答主
回答量:22
采纳率:0%
帮助的人:27.8万
展开全部
首先进行第一步“a=5”:将5赋给a,这样实现了a=5

然后进行第二步“b=a++”,由于++为后缀,所以先将a值赋给b,结果b=5,然后进行a++运算,a=6

然后进行第三步“c=--a-b++”,首先--为前缀,所以先运算--a,结果a=5,由于++为后缀,所以接下来先运算c=a-b,结果c=5-5.为0,最后进行b++运算,结果b=6

最后一步“d=(a++)-(++b)+c--”,先运算括号里面的“a++”和“++b”,结果a=6,b=7,由于--为后缀,所以先运算d=a-b+c,也就是d=6-7+1=0,最后运算c--。结果c=-1

以上是运算结果,考的主要是运算的优先级,是这样的,看见括号里面的,先运算括号里面的,没有括号的,你要看++或是--,是前缀,还是后缀,如果是前缀的话,先运算++或是--运算,如果是后缀的话,你就先运算整个式子,运算完了整个式子,再运算++或是--运算,至于具体的例子,我给你的计算过程,你可以自己结合着体会一下,有什么不明白的,就追问我。
更多追问追答
追问
谢谢你帮我回答,在问下++ 优先级比= 高为什么不先运算++啊,最后一步C为什么又是1了 第三步的时候C=0啊,我用C语言算出来实际d=-2啊怎么和你算的不一样。
追答
首先第一个问题,++优先级最高,但是规定,如果++为后缀的时候,先算其他所有的式子,再算++。所以,如果++后缀,就先算=了。
第二个问题,实在对不起,我看错了,还有一点我刚才又查了查,并且运行了一下,所以,我误导了你,现在要要纠正一下。是在对不起。我重新说一下第三步,首先看括号里面的,先运算括号里面的“a++”和“++b”,但是这里由于a++为后缀,所以虽然有括号,但是也要最后算,所以算最后一大步时候,是这样算的,先算++b,结果b=7,然后算d=a-b+c,也就是d=5-7+0,结果d=-2,然后最后算a++和c--,结果a=6,c=-1,所以你得到的数最后为a=6,b=7,c=-1,d=-2.这回没错了,是在对不起你,误导你了。这次我实际运行了一下,这个结果和过程是绝对没错的了。对不起啊。
犹望亭菅罗
2019-11-25 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.3万
采纳率:33%
帮助的人:686万
展开全部
1.
switch结构分支没加break;跳出语句,开始执行后,程序由x=1调到case
1
分支
a++(a由0自己加为1),由于没有break语句,程序继续执行到case
2
分支
a++
b++(a由1自加变2,b由0自加为1),之后程序printf输出
a=2
,b=1
2.添加break后,结果是a=1,b=0
#include
"stdio.h"
main()
{
int
x=1,a=0,b=0;
switch(x)
{
case
0
:
b++
;
break
;
case
1
:
a++
;
break
;
case
2
:
a++
;
b++
;
break
;
}
printf("a=%d,b=%d\n",a,b);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zq757797769
2013-07-04 · TA获得超过201个赞
知道小有建树答主
回答量:294
采纳率:0%
帮助的人:160万
展开全部
a=5;
b=a++,这部之后b=5,a=6
c=--a-b++这步之后c=0,a=5,b=6
d=(a++)-(++b)+c--这步之后d=0,a=6,b=7,c=-1
更多追问追答
追问
++ --和+ - =优先级一样吗
追答
不一样啊++      --()[]什么最高
+-号的比=高
这个东西挺多的,最好去http://wenku.baidu.com/view/f57f4e10f18583d04964594f.html
这个是符号优先级的百度文库你可以去看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式