关于C语言的简单问题

有道题目是这样的.
写出下面表达式运算后a的值,设原来a=12,设a和n都已定义为整型变量.
(1)a/=a=a (2)a%=(n%=2),n的值等于5 (3)a+=a-=a*=a 答案都是为0,和我做的答案不一样.请大哥哥大姐姐们帮帮小弟一下,我是一个初学者.请写出过程啊,最好再讲解一下了.

(1)表达式结果为1.
/=和=均是赋值运算(a/=a相当于a=a/a)。赋值运算的顺序是自右至左(称结合性)。也就是先a=a(a还是12),再a/=a,结果为1(相当于12/12)

(2)a%=(n%=2)相当于a=a%(n=n%2)。(%为求余运算).5%2结果为1.12%1能够整除,没有余数。所以结果为0.

(3)a+=a-=a*=a。(+= -= *=均是赋值运算)。正如1所述。其为自右至左运算。先a=a*a。a的值为144.而这个运算其影响前面的a。前面两个a的值均是144.第二次运算a-=144。144-144结果为0.同理,a值为0,前面a的值也就成了0。a+=0。0+0结果还是为0.

至于第1题。结果不可能为0.要不就题有错,要不就答案有错。
以上结果经过C测试。

总体来说。以上题目需要注意两点:
1)如果均是赋值运算时,运算要从右到左的算。
2)赋值运算会修改变量的值,先赋值的,会影响其后运算原变量的值。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-09-19
意思可能是说这些式子不成立,是假的。会输出0
第2个回答  2008-09-19
这个是C的源代码吗?

(1)a/=a=a (2)a%=(n%=2)
n=5 (3)a+=a-=a*=a

/=
%=
+=
-=
*=
在C里面有特殊含义运算符的,查找一下C的书籍哦。
第3个回答  2008-09-19
1.a/=a=a = a/=(a=a) 值为1。
2. a%=(n%=2) = 12%=(5%=2)
5%=2为求余运算,其值为1;12%1也为求余运算,其结果当然为0。
3.a+=a-=a*=a = a+=(a-=(a*=a))赋值运算符优先级为向左优先,因此先计算a*=a,再计算a-=a,在这一步值为0,后面的a+=a当然没有用了。
第4个回答  2008-09-19
(1)
a/=a=a
等价于
(a/=a)=a

a/=a之后,a的值是1,由于(a/=a)是一个左值,所以它可以再次赋值,也就是a=a,之后,a的值还是1,而不是0

(2)
n%=2等价于n=n%2,由于n=5,所以,n%2=1,此时原式就变成了a%=1,由于任何一个整数都可以被1整除,所以最终结果是0

(3)
原式等价于:

a+=(a-=(a*=a))
即先算最内层的括号a*=a,之后a=144
再算外层括号,外层括号内的式子就等价于a-=a,此后,a=0
最后算括号外面的a+=0,此时a=0,所以最终结果就是0
第5个回答  2008-09-19
汗!第一个我居然不会!
回去好好学习。

匿名说得还可以。
相似回答