forever396888 发表于 2014-7-25 20:08:09

还是做鱼C考场题目时有些问题难以理解

设有定义 int a = 2, 下列表达式的值不为6的是
A.a * 2, a += 2
B.a *= a + 1
C.a *= ( a + 1)
D.a ++, a *= 2

A选项难道不是先计算a*2=4,然后4+2=6吗?


Angel丶L 发表于 2014-7-25 20:19:37

答案是什么?

Angel丶L 发表于 2014-7-25 20:20:50

我感觉答案是B

Angel丶L 发表于 2014-7-25 20:24:01

A.a * 2, a += 2
B.a *= a + 1
C.a *= ( a + 1)
D.a ++, a *= 2
[]内是我分析的。计算方式

oggplay 发表于 2014-7-25 20:25:11

a*2是等于4,但是给a赋值了么?a*2只是个过程变量,所以A选项a只等于4

forever396888 发表于 2014-7-25 20:35:18

oggplay 发表于 2014-7-25 20:25
a*2是等于4,但是给a赋值了么?a*2只是个过程变量,所以A选项a只等于4

那a ++, a *= 2 是不是a++意味着3赋值给a了,然后3*2?

oggplay 发表于 2014-7-25 20:39:09

forever396888 发表于 2014-7-25 20:35
那a ++, a *= 2 是不是a++意味着3赋值给a了,然后3*2?

++运算符比如i++,这是自加运算符。i++相当于i=i+1。

forever396888 发表于 2014-7-25 20:39:41

oggplay 发表于 2014-7-25 20:39
++运算符比如i++,这是自加运算符。i++相当于i=i+1。

谢谢!

forever396888 发表于 2014-7-25 20:41:17

oggplay 发表于 2014-7-25 20:39
++运算符比如i++,这是自加运算符。i++相当于i=i+1。

再向你请教一个问题。int k, i=3;k=(i++)+(i++)+(i++);为什么结果是i最后为6,k为9实在难以理解!
               

oggplay 发表于 2014-7-25 20:50:51

forever396888 发表于 2014-7-25 20:41
再向你请教一个问题。int k, i=3;k=(i++)+(i++)+(i++);为什么结果是i最后为6,k为9实在难以理解!

理解好运算符优先等级就好,不要钻牛角尖。这个问题具体看编译器怎么解释。

puzy444 发表于 2014-7-25 23:18:09

,的意思就是,取后边那个结果:dizzy:

chenj 发表于 2014-7-25 23:55:43

新手。
我认为A选项是a*=2,a+2就等于6了
页: [1]
查看完整版本: 还是做鱼C考场题目时有些问题难以理解