1203081549 发表于 2022-11-10 15:19:46

求大佬帮解

int a=3
a+=a-=a*a;
运行结果为—12的运行逻辑

wp231957 发表于 2022-11-10 15:21:33

书写如此匪夷所思的代码不是自找不自在

1203081549 发表于 2022-11-10 15:24:53

wp231957 发表于 2022-11-10 15:21
书写如此匪夷所思的代码不是自找不自在

这是书上的案例{:10_266:}{:10_266:}

jhq999 发表于 2022-11-10 15:29:38

本帖最后由 jhq999 于 2022-11-10 15:32 编辑

3*3=9
a-=9
a=3-9=-6
a+=-6
a=-6+-6=-12

jackz007 发表于 2022-11-10 15:32:13

本帖最后由 jackz007 于 2022-11-10 15:33 编辑

a += a- = a*a

a -= a * a
a = a - a * a
a = 3 - 3 * 3
= -6

a += a
a = a + a
= -6 + -6
= -12

dolly_yos2 发表于 2022-11-10 15:38:49

-12 这个结果是楼上几位所说这样得出来的,但是在 C 的语境下这段代码没有标准的运行结果,可以产生任何结果
如果书中出现这段代码不是为了说明这种写法是糟糕的,如果有机会,换一本书

两手空空儿 发表于 2022-11-10 15:38:53

赋值语句,从右往左看
1, a * a = 9 , 这里还没有赋值, a = 3
2, a -= 9   , a开始补赋值a = 3-9 ,a= -6
3, a += -6,    a= -6+-6   = -12

1203081549 发表于 2022-11-10 15:41:10

谢谢大家,
页: [1]
查看完整版本: 求大佬帮解