我的移个朋友问我的题目:
x+a%3*(int)(x+y)%2/4的运算结果是什么?其中 x=2.5;a=7;y=4.7
我编程算了一下:main() {float x=2.5,y=4.7; int a=7;
x=x+a%3*(int)(x+y)%2/4; printf("%f",x);getch();}
打印结果是2.5,我左想右想都不知道为什么,请大家帮忙。谢谢
x+a%3*(int)(x+y)%2/4 =x+a%(3*(int)(x+y))%2/4 =x+a%21%2/4 把x=2.5 a=7 y=4.7代入
=2.5+((7%21)%2)/4 =2.5+1/4 =2.5+0 =2.5
乌鸦请注意运算符号的优先级
懂了,但还有个疑问:%是比/优先吗?
是在同一个优先级
优先级是这样的:
()
* / %
〈 〈= 〉= 〉
== !=
=
一般的c语言教程都有一个附录 就是运算符优先性和结合性 建议看看书
%和/的优先级应该是一样的 运算次序有结合方向决定
运算顺序 从左往右
台下(废话!)
谢谢各位
不用谢!(被臭鸡蛋狂扔中……!)
PS:这个应该看书呢,朋友,是foundation哪!
[此贴子已经被作者于2004-07-24 14:34:11编辑过]
很久没看书了,把C基本的知识已经学完了,想不到会被这个难住……
算了,还是要努力学习啊。
我还是觉得二楼的那位的这句有点神奇
x+a%3*(int)(x+y)%2/4 =x+a%(3*(int)(x+y))%2/4