搜索
bottom↓
回复: 14

[古董贴][求教]如何计算一个奇怪的C语言表达式的值

[复制链接]

出0入296汤圆

发表于 2004-12-9 14:45:31 | 显示全部楼层 |阅读模式
如果

int a=12;

那么

a-=a+=a*=a

的结果是多少呢?

答案是0,想不明白




-----此内容被Gorgon Meducer于2004-12-11,18:54:02编辑过

出0入0汤圆

发表于 2004-12-9 18:26:22 | 显示全部楼层
这样的题就象茴香豆的“茴”有几种写法一样无趣。

出0入0汤圆

发表于 2004-12-9 18:51:18 | 显示全部楼层
一个有趣的问题,-=、+=、*=属于同一优先级,顺序为从右至左,那么应该是先计算*=,再计算+=,最后计算-=,当计算-=时表达式应为a=a-a,所以结果为零。

出0入296汤圆

 楼主| 发表于 2004-12-11 18:55:11 | 显示全部楼层
谢谢,粗心了,没有注意运算的主体一直是A

出0入0汤圆

发表于 2005-1-6 10:25:46 | 显示全部楼层
这样的东东做考试题还凑或

实际工作绝对不可取,不断这样,即使是优先级对的几级运算中,最好也要加上括号,这样程序更易读,比如 a=i>>2+j;最好写成a=i>>(2+j);

出0入0汤圆

发表于 2005-1-6 11:44:08 | 显示全部楼层
这样的问题如果编译器规则遇到此类优先级问题一律加括号就好了,免得一些无聊的考官或貌似有学问的人哪来考别人,此类问题到机器上一试马上知晓,却有些人哪来卖弄。我就曾遇到应试时考官问keil c51 c语言与汇编参数互相调用,对应记存器R?的问题。机器能完成的事情我们为何要记忆?

出0入0汤圆

发表于 2005-1-6 12:03:22 | 显示全部楼层
运算有疑问就加括号。

出0入0汤圆

发表于 2005-1-7 11:02:05 | 显示全部楼层
bucker 沙漠和我想的一样。不知实际对不对???

用C编译出汇编,看一下就知道了。

出0入296汤圆

 楼主| 发表于 2005-1-7 11:48:29 | 显示全部楼层
对不起,只是一道无聊的考试题目,本来不值得探讨的……(即使算灌水,我仍然要说明一下)

出0入0汤圆

发表于 2005-7-14 13:50:28 | 显示全部楼层
我觉得不需要算呀!只需要看一下a-=a+=a*=a,不论前面a算出来得多少,最后一步肯定是这样的a-=a,所以肯定为0!!!

出0入0汤圆

发表于 2005-7-15 10:15:31 | 显示全部楼层
傻孩子也有空做这个?呵呵

出0入0汤圆

发表于 2008-3-8 04:25:48 | 显示全部楼层
my god!
资源的浪费
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-9 05:34

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表