设x=2.5,a=7,y=4.7,求x+a%3*(int)(x+y)%2/4 求解题过程,要说明先算哪步。 最好再说说运算符的优先级。
展开全部
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
=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;
}
展开全部
算术运算符是按左结合性运算的,即从左到右,强制类型转换优先级高于求余运算。
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先算 (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。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先把未知数代入
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.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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询