int x=17,y=5;
x*=x++/--y;
问:x的值是多少??
我用VC做过试验后发现结果与答案一样,都是69。看到一位仁兄的解释为x++/--y就是17/4=4,x*=4就是17*4=68,x在这之后还会自加1,所以是69。看到这里,我发现自己对于--和++的理解不对,以此题为例,我认为x应该在执行x++后立即加1,而不是在整个语句结束之后加1,我知道自己的这种理解是错的,所提请教各位如何理解当作后缀的--和++。在我看过此题之后,我觉得作为后缀的--和++在其变量参与完与其自身有关的所有运算之后立即减1或加1,以此题为例,程序在执行完x++后,因为x还要参与乘法,所以不会立即加1,而是在语句结束之后加1。如果程序改为int a=1,x=17,y=5; a*=x++/--y; ,由于x只参与x++的运算,所有x在x++后立即加1 。我的理解正确吗??请各位不吝赐教。谢谢~
18 个解决方案
#1
不要在表达式中使用可能修改表达式中另外一块的任何子表达式,弄明白这个对你也毫无意义,因为你首要的是要避免写这种表达式,而不是去在错误的使用这种表达式的前提下,看看表达式怎么算
#2
这种题实际意义不大,最好用规范的写作方式,用括号括起 ,减少误解
#3
不要迷信书、考题、老师;
要迷信CPU、编译器、调试器、运行结果。
要迷信CPU、编译器、调试器、运行结果。
#4
特别是第二行代码的x++,不同编译器下可能会有所不同
你可以试一下VC,TC来编译看看结果就知道了
#5
我想知道自己后来所说的对作为后缀的--和++的理解是否正确,想知道它们对于变量什么时候减1,什么时候加1,并不是针对我说的第一个程序。请赐教!
#6
#7
up
#8
.........好无聊呀
#9
也不要迷信编译器,那东西因产商的喜好而定。
#10
这++ --东西最初来自于计算机等级考试,后来有被很多公司当面试题用.确实没有啥用处,不同编译器结果的确不同,而且项目中这么写准回家,可不少公司还是把这个做面试题,哎........
#11
我的理解是先17/4=4 然后18*4=72
你用其他编译器测试了吗?不过,我VC,测试也是69! 我怀疑出这种题目的老师也就用的是VC了
我看你未必错,换个环境没准就对了!呵呵……
而那位高手的解答你不觉着有点牵强吗!x/y ,难道不算使用了x,不算的话怎么得到的4!既然使用了,x的值就应该+1为18,还要等到最后整个表达式结束后才使x+1!我觉着,也就只能是编译器的道理了……
正确,这个是没有争议的!这样没有争议的多好啊……
#12
个人意见:写出连自己都无法预测运行结果的代码的程序员该杀!
#13
程序要易读易懂,不能有分歧呀~~
分步写
#14
绝对该杀,简直折腾人……
#15
关于++ -- 都是谭浩强惹的祸~
#16
應該是68
#17
后缀的--和++,是以分号为界定的。执行完整条语句后在--或++
#18
玩弄技巧,容易陷入自己做的迷宫
#1
不要在表达式中使用可能修改表达式中另外一块的任何子表达式,弄明白这个对你也毫无意义,因为你首要的是要避免写这种表达式,而不是去在错误的使用这种表达式的前提下,看看表达式怎么算
#2
这种题实际意义不大,最好用规范的写作方式,用括号括起 ,减少误解
#3
不要迷信书、考题、老师;
要迷信CPU、编译器、调试器、运行结果。
要迷信CPU、编译器、调试器、运行结果。
#4
特别是第二行代码的x++,不同编译器下可能会有所不同
你可以试一下VC,TC来编译看看结果就知道了
#5
我想知道自己后来所说的对作为后缀的--和++的理解是否正确,想知道它们对于变量什么时候减1,什么时候加1,并不是针对我说的第一个程序。请赐教!
#6
#7
up
#8
.........好无聊呀
#9
也不要迷信编译器,那东西因产商的喜好而定。
#10
这++ --东西最初来自于计算机等级考试,后来有被很多公司当面试题用.确实没有啥用处,不同编译器结果的确不同,而且项目中这么写准回家,可不少公司还是把这个做面试题,哎........
#11
我的理解是先17/4=4 然后18*4=72
你用其他编译器测试了吗?不过,我VC,测试也是69! 我怀疑出这种题目的老师也就用的是VC了
我看你未必错,换个环境没准就对了!呵呵……
而那位高手的解答你不觉着有点牵强吗!x/y ,难道不算使用了x,不算的话怎么得到的4!既然使用了,x的值就应该+1为18,还要等到最后整个表达式结束后才使x+1!我觉着,也就只能是编译器的道理了……
正确,这个是没有争议的!这样没有争议的多好啊……
#12
个人意见:写出连自己都无法预测运行结果的代码的程序员该杀!
#13
程序要易读易懂,不能有分歧呀~~
分步写
#14
绝对该杀,简直折腾人……
#15
关于++ -- 都是谭浩强惹的祸~
#16
應該是68
#17
后缀的--和++,是以分号为界定的。执行完整条语句后在--或++
#18
玩弄技巧,容易陷入自己做的迷宫