[古董贴][求教]如何计算一个奇怪的C语言表达式的值
如果int a=12;
那么
a-=a+=a*=a
的结果是多少呢?
答案是0,想不明白
-----此内容被Gorgon Meducer于2004-12-11,18:54:02编辑过 这样的题就象茴香豆的“茴”有几种写法一样无趣。 一个有趣的问题,-=、+=、*=属于同一优先级,顺序为从右至左,那么应该是先计算*=,再计算+=,最后计算-=,当计算-=时表达式应为a=a-a,所以结果为零。 谢谢,粗心了,没有注意运算的主体一直是A 这样的东东做考试题还凑或
实际工作绝对不可取,不断这样,即使是优先级对的几级运算中,最好也要加上括号,这样程序更易读,比如 a=i>>2+j;最好写成a=i>>(2+j); 这样的问题如果编译器规则遇到此类优先级问题一律加括号就好了,免得一些无聊的考官或貌似有学问的人哪来考别人,此类问题到机器上一试马上知晓,却有些人哪来卖弄。我就曾遇到应试时考官问keil c51 c语言与汇编参数互相调用,对应记存器R?的问题。机器能完成的事情我们为何要记忆? 运算有疑问就加括号。 bucker 沙漠和我想的一样。不知实际对不对???
用C编译出汇编,看一下就知道了。 对不起,只是一道无聊的考试题目,本来不值得探讨的……(即使算灌水,我仍然要说明一下) 我觉得不需要算呀!只需要看一下a-=a+=a*=a,不论前面a算出来得多少,最后一步肯定是这样的a-=a,所以肯定为0!!! 傻孩子也有空做这个?呵呵 my god!
资源的浪费
页:
[1]