c语言课 t=1,t+5,t++ 表达式结果是1,t值是2 为什么表达式结果不是7.t不是不是6

如题所述

第1个回答  2014-09-28
对了,因为t+5这个并没有把它重新赋值给t 只运行了t++(t=t+1),所以t=2;结果是看输出了什么追问

不好意思啊……没听懂……

为什么t+5没有赋值……

追答

结果是:2
逗号表达式,从左到右依次计算每一个表达式的值。
t=1,于是此时t=1。
t+5,得到6(不赋值),继续计算。
t++返回t加1之前的值;t=1,但执行后t再加1;t=2;
这个式子相当于:t=1;t+5;t=t++;最后t=2.

ps:t+5就是混乱思考,想赋值要这样t=t+5

追问

谢谢

本回答被提问者采纳
第2个回答  推荐于2017-10-06
首先把1赋给t ,t+5的值是6,而t还是1,t++先运用在自增,输出1后t的值变为2.

连续几个表达式,则表达式的值是最后一个表达式的值,所以表达式的值是1,t的值时2追问

那么t+5有什么用啊……

追答

这个就是考你表达式和多个表达式的熟练运用

追问

谢谢

第3个回答  2014-09-28
表达式t + 5 中5是没有加到t里面去的,所以对于t值而言,上面的表达式等同于t=1,t++,后面的t++返回当前t值再加1,所以t=1,t+5,t++的结果是1,t值为2时表达式的结果应该是2追问

可是t不是变量么……t+5为什么不赋值……

谢谢

追答

t是变量,但是可以看t++在内存中的计算过程,t = t + 1,首先t值存储在一个寄存器A1中,1存储在寄存器A2中,寄存器A3用来存储A1+A2的值即 t + 1,然后A3的值赋值给A1,完成整个计算,t + 5相当于没有进行A3赋值给A1的过程,准确的说t+5计算后的值没有赋给任何变量,这完全是一句无效的语句

第4个回答  2014-09-28
楼主,逗号的算法是从右到左

就是先算t++,再算t+5,最后再算t+1.
考试中,很多人就栽在逗号算法上追问

我们老师说从左往右

追答

上面打错,最后再算t=1

你百度查查吧,符号优先级,逗号是最低的

相似回答