设x=2.5,a=7,y=4.7,求x+a%3*(int)(x+y)%2/4 求解题过程,要说明先算哪步。 最好再说说运算符的优先级。

sun_siliang
2011-04-09 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4489万
展开全部
x+a%3*(int)(x+y)%2/4 //先算(int)(x+y),x+y取整得7
=x+a%3*7%2/4 //算a%3=1
=x+1*7%2/4 //算1*7=7
=x+7%2/4 //算7%2=1
=x+1/4 //算1/4=0
=x+0
=2.5
追问
为什么我这么打输出来的是2.000000

main(){
int x=2.5,a=7,y=4.7;
float h;
h=x+a%3*(int)(x+y)%2/4;
printf("%f\n",h);
}
追答
/int x=2.5,a=7,y=4.7;//请问x,与y是整数吗?

//下面是测试程序
#include
int main(void)
{
float x=2.5,y=4.7;
float h;
int a=7;
h=x+a%3*(int)(x+y)%2/4;
printf("%f\n",h);
return 0;
}
non_peace
2011-04-09
知道答主
回答量:6
采纳率:0%
帮助的人:0
展开全部
算术运算符是按左结合性运算的,即从左到右,强制类型转换优先级高于求余运算。
1. a%3=1
2. (int)(x+y)=7
3. 1*7=7
4. 7%2=1
5. 1/4=0
6. X+0=2.5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
倾听天意
2011-04-09
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
先算 (int)(x+y) = 7;再算3*(int)(x+y)和2/4 ,分别等于21,0(3*7,2除4取整为0);再算7%21%0,等于0;最后算x+0,等于2.5。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
oneone_a
2011-04-09 · 超过14用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:26.9万
展开全部
先把未知数代入
2.5+7%*3*int(2.5+7)%*2/4
=2.5+7%*3*9%*2/4
=2.5+7%*3*9%/2
=2.5+63*3/2/10000
=2.5+189/2/10000
=2.5+0.00945
=2.50945
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式