永发信息网

求下面C语言的结果和过程啊,求大神帮忙!

答案:3  悬赏:50  手机版
解决时间 2021-02-25 17:29
  • 提问者网友:流星是天使的眼泪
  • 2021-02-25 04:43
求下面C语言的结果和过程啊,求大神帮忙!
最佳答案
  • 五星知识达人网友:骨子里都是戏
  • 2021-02-25 06:12
答案是6,9和9,25;过程是:括号内的a++在b=(a++)这一行的过程中还是不变的,但是过了分号a++就会自动加一也就是三个都变化所以a的值是6,b的值是3+3+3=9;
后面一个就是++a在a之后了这个a就变成了7(上面的a已经变成6),当走到第二个a++的时候(因为括号先走所以加号还不会走到)这时候++a就是8,那么前面的++a也会因此跟着变成8,最后就是最后一个++a当然是变成9,答案就是8+8+9=25.追问是不是不同的编译器答案会不同啊
全部回答
  • 1楼网友:春色三分
  • 2021-02-25 06:56
卧槽 这逻辑这特么的要强啊!看样子得找大神了追问去找吧追答/kb
  • 2楼网友:青灯有味
  • 2021-02-25 06:44
a++:先使用,后自增;
++a:先自增,后使用;

b=(a++)+(a++)+(a++)//先使用a的值进行相加运算,b=3+3+3=9,然后自增3次,a=6.

c=(++a)+(++a)+(++a)//现将a自增3次,然后相加。

这里会产生这样的错误理解:
c=7+8+9=24
实际上这样理解忽略了,a是同一个变量的事实,既然a是同一个变量,那么后面改变,则a的值整体统一随之改变。
正确的是:c=9+9+9=27.追问大神我运行结果居然是25追答
不同的编译器的结果不同啊,我在TC中验证过,结果是9和27.。


我也在vc中运行过,结果确实是25.追问我用的c++编辑答案是6,9和9,25;过程是:括号内的a++在b=(a++)这一行的过程中还是不变的,但是过了分号a++就会自动加一也就是三个都变化所以a的值是6,b的值是3+3+3=9;
后面一个就是++a在a之后了这个a就变成了7(上面的a已经变成6),当走到第二个a++的时候(因为括号先走所以加号还不会走到)这时候++a就是8,那么前面的++a也会因此跟着变成8,最后就是最后一个++a当然是变成9,答案就是8+8+9=25.一个网友这么回答的追答我也在C++中运行过,但是对其运算机制不是太理解,我上学时老师是按照以上的方法讲解的。对于C++中的这种运算,我也存疑问的,为什么前面的8相应的同步变化,而最后的9不同步变化呢?有待研究。追问不明白啊.老师给的答案是27运算结果是25而且按另一个算出25的网友给的算法,再多加一个++a来验算,他的方法可行
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯