C语言(++b)+(++b)+(++b));

int b=3;
printf("%d\n",(++b)+(++b)+(++b));
结果等于16
求解析...

首先进行第一步“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

以上是运算结果,考的主要是运算的优先级,是这样的,看见括号里面的,先运算括号里面的,没有括号的,你要看++或是--,是前缀,还是后缀,如果是前缀的话,先运算++或是--运算,如果是后缀的话,你就先运算整个式子,运算完了整个式子,再运算++或是--运算,至于具体的例子,我给你的计算过程,你可以自己结合着体会一下,有什么不明白的,就追问我。追问

=。=貌似我这里没出现a,c呀。。。。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-18
printf("%d\n",(++b)+(++b)+(++b)); 从左向右, 第一个 ++b b= 4 第二 ++b b=5 然后由于 从左向右的原因, 变成了 5+5+(++5) 先算左边的5+5 产生临时值 10 + 最后的 ++b 为 6 结果 = 16本回答被提问者采纳
第2个回答  2014-06-18
运算的顺序是从左到右:
第一次:++b —— b = 4
第二次:++b —— b = 5
++b + ++b —— result = 5 + 5 = 10

第三次:++b —— b = 6
10 + ++b —— result = 16追问

小学生智商表示没看懂= =、

追答

意思就是说第二次++b后b=5,就相当于b + b = 10.
第三次++b后,b= 6,result = 10 + 6 = 16.

如果你不信,四次++b相加 = 23

追问

谢谢了。明白了。。

本回答被网友采纳
第3个回答  2014-06-18
结果为16没错,但运算顺序不一定是从左至右,他们优先级相同,尽量避免这种情况,当一个变量多次出现在同一个表达式里时,不要将增量或减量运算符运用到它的上面。追问

谢谢了。这是题目出的-。-不怪我。。。

第4个回答  2019-03-13

...不是15吗?

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网