C语言编程

[复制链接]
查看11 | 回复5 | 2010-8-10 22:10:48 | 显示全部楼层 |阅读模式
int a=5;
a+=a/=a*=2;
请问a等于几?why?
答案是2,请问诸位,这个跟左结合右结合有什么关系,还是所有的赋值语句都是都是这样从左往右算的?
答得满意的话我追加20分

回复

使用道具 举报

千问 | 2010-8-10 22:10:48 | 显示全部楼层
这是连等式,和左结合右结合没有什么关系从右向左计算这式子看成 a += ( a /= ( a *= 2 ) )这其实是个副产品它的核心是说明在C语言里,赋值语句也是值的,这在其它语言我是没有看见过常见的应用while( c = i*2 ){};同时完成赋值与判断常见的错误if( bError = TRUE ){}(正确应该是 if( bError==TRUE){}ps:这个错误实在太常见了,而且非常难找出来所以一般都建议在==判断时,把常量放在左侧,变量放在右侧以防止出现这个错误
回复

使用道具 举报

千问 | 2010-8-10 22:10:48 | 显示全部楼层
从右面往左算a*=2
a=a*2=10
a/=10
a=a/10=1
a+=1
a=a+1=2 结果是2从右往左算啊,我上面不是给步骤了么,一部一步的,每一步每一个等号a都被赋予新的值了,不懂密我
回复

使用道具 举报

千问 | 2010-8-10 22:10:48 | 显示全部楼层
2我得的是,顺序是从右往左。可以这样:a+=(a/=(a*=2))然后一个括号里面的运算是这样,比如a*=2等同于这样:a=(a*2)其他的同理,注意a的值在变
回复

使用道具 举报

千问 | 2010-8-10 22:10:48 | 显示全部楼层
a*=2后a=10a/=10后a=1a+=1后a=2向念经样的就做完了这题。…………
回复

使用道具 举报

千问 | 2010-8-10 22:10:48 | 显示全部楼层
会这些有什么用,现实中谁这样写代码早就被抽死了,现在的教育真是悲哀。2
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行