求C语言表达式的值?

[复制链接]
查看11 | 回复4 | 2009-11-1 16:01:43 | 显示全部楼层 |阅读模式
(1)x+y-->5.0(int)(x+Y)-->5a%3-->1a%3*(int)(x+Y)-->5a%3*(int)(x+Y)%2-->1a%3*(int)(x+Y)%2/4-->0x+a%3*(int)(x+Y)%2/4-->2.5(2)a+b-->5(float)(a+b)-->5.0f(float)(a+b)/2-->2.5f(int)x-->3(int)y-->2(int)x%(int)y-->(float)(a+b)/2+(int)x%(int)y-->3.5f
回复

使用道具 举报

千问 | 2009-11-1 16:01:43 | 显示全部楼层
第一个为2.5分析:先算(int)(x+y) = 5再从左往右算,a%3=1, 1*5=5, 5%2=1, 1/4=0;所以得出2.5第二个为3.5:先算float(a+b) = 5.05.0/2=2.5, 2.5+3%2 = 3.5
回复

使用道具 举报

千问 | 2009-11-1 16:01:43 | 显示全部楼层
(1)2.5(2)3
回复

使用道具 举报

千问 | 2009-11-1 16:01:43 | 显示全部楼层
2.5
3.5
回复

使用道具 举报

千问 | 2009-11-1 16:01:43 | 显示全部楼层
问题一:对于int型/的作用其实是求商的,明白否(强制转换)。问题二:讲方法。。。对于c语言中的逻辑运算,其 结合性是从左往右的,也就是从左往右运算。在运算的过程中,只要计算到某一步时能够确定整个表达式的值时,后面的式子就不会参与运算了,也就是保持原来的值不变。像你的问题中的第一个例子,a=0,0&&任何数还是0,所以后面的两个式子就不会参与运算了。不懂再问。。。。1。a%=(n%=2)先计算右边的(n%=2),其值n=n%2,即n除2的余数,显然n=1;原式子变为a%=1,所以a=02。a+=a-=a*=a从右到左进行;a*=a-----a=144,-------a+=a-=144-----a-=144----a=0-----a+=a----a+=0---a=0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行