鱼C论坛

 找回密码
 立即注册
查看: 2692|回复: 13

初学C语言,这个不太明白,请教下,谢谢了哈

[复制链接]
发表于 2011-12-20 23:01:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
{
        int b,a=12;
        b=a+=a-=a*=a;
        printf("%d\n",b);
}
结果为0,详细解说下......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-20 23:44:24 | 显示全部楼层
按赋值从左向右的顺序推的话
a - = a 这里a = 0了 所以再往左是0 + 0 结果b就等于0了

当然上面也是推的而已 究竟对不对我也不清楚,貌似说不同的编译器处理也有些差异  一般不要这么连着去写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-20 23:47:17 | 显示全部楼层
b=(a+=(a-=(a*=a)))
a = 12
a*=a    //  a = a * a   ,   a = 12 * 12 = 144
a-=(a*=a)    //  a = a - a   ,   a = 0
a+=(a-=(a*=a))     //  a = a + a   , a = 0
b = (a+=(a-=(a*=a)))    //   b = 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-21 00:25:22 | 显示全部楼层
b=a+=a-=a*=a
**************************************
b = a += a -= (a = a * a)

b = a += a -= a*a

b = a += (a = a*a - a*a)

b = a += 0

b = (a = 0 + 0)

b = 0

这样描述,会不会更直观点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-25 09:04:49 | 显示全部楼层
在这个C语句中   b=a+=a-=a*=a;
运算符为赋值运算符和复合的赋值运算符,其运算符的结合方向为自右向左的,所以
1、先算 a*=a; 即a=a*a;结果a=144;
2、再算a-=a;结果a=0;
3、接下来算a+=a;结果a=0;
4、最后b的结果就为0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-25 09:35:59 | 显示全部楼层
中间有一个a-=a意思你懂得  a=a-a怎么搞都是零么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-25 12:46:08 | 显示全部楼层
不要连着写 分开写 更直观
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-25 17:04:54 | 显示全部楼层
赋值运算是自右向左的。 a -= 这里有问题,此时a已经被赋值为0,再向左以后都是 0 了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-25 20:26:58 | 显示全部楼层
晕了
反汇编一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-25 21:19:20 | 显示全部楼层
lz  如果知道数学的合并就行饿了...   b = (a+=(a-=(a*=a)));  因为赋值运算符是从右到左的 就从a *= a开始
结果等于:144  ;  到  a -= a 的话就这样 a = a^2  也就是144-144 就等于0 ; 又到a += a了 ,也就是按照前面的就是0+0等于0;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-25 21:23:28 | 显示全部楼层

好像这位朋友错了吧?赋值运算符是从右到左的,逗号运算符才是从左到右的哦。 还有这个不是自增自减,当然还是有些是变态的编译器从左到右的、、
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-25 23:02:52 | 显示全部楼层
学习了 !;P
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-25 23:02:53 | 显示全部楼层
C语言 发表于 2011-12-25 21:23
好像这位朋友错了吧?赋值运算符是从右到左的,逗号运算符才是从左到右的哦。 还有这个不是自增自减,当然 ...

:loveliness: 真仔细我都没发现我打错了。。是从右向左
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-29 10:24:41 | 显示全部楼层
看完帖子,都不知道C是什么了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-28 17:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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