k=(++i)+(++i)+(++i);
.....
唉 ..看的眼花.
[此贴子已经被作者于2006-6-11 0:18:09编辑过]
----------------解决方案--------------------------------------------------------
以下是引用486的魅力在2006-6-10 14:45:38的发言:
a=(b=5)*(c=8)
为什么会等于18?
i=3
K=(++i)+(++i)+(++i)
为什么值为40 10
不要再纠缠这些东西了,往后学。(尽信书不如无书)
----------------解决方案--------------------------------------------------------
以下是引用feng1256在2006-6-11 0:20:03的发言:
不要再纠缠这些东西了,往后学。(尽信书不如无书)
说的有道理,这种东西实际用处不大,谁会写一个东西的时候,白痴一样加入诸如k=(++i)+(++i)+(++i)这样的表达式,不仅别人不好理解,有时候自己也会头晕的。
----------------解决方案--------------------------------------------------------
[QUOTE]k=(++i)+(++i)+(++i)[/QUOTE]
这种行为在C标准中未做定义,也就是说,这个K的值不管是什么编译器的行为都是对的.
从另一个意义讲,这是违背C标准的表达式.
----------------解决方案--------------------------------------------------------
第一题40
第二题这个就不一定了
要根据你的编译器来定
因为每个编译器进出内存的顺序可以有所不同;
一般出这种题的目的不是得到答案
而只是让你明白一个道理
那就是程序他运行的过程可能很诡异
千万不要去为了耍点小聪明
而编出弄巧成拙的语句
有时候宁愿多写几行
也要让你和编译器都看懂
----------------解决方案--------------------------------------------------------
谢谢各位...努力学习..书上答案确实有问题
----------------解决方案--------------------------------------------------------
[分享]
第一的答案为40;第二的答案为16.
有任何不理解的地方可以加QQ331826630.
----------------解决方案--------------------------------------------------------