C语言 求表达式的值

来源:百度知道 编辑:UC知道 时间:2024/09/22 16:39:27
x+a%3*(int)(x+y)%2/4 设x=2.5 ,a=7,y=4.7
怎么用C语言编程 求出最后的值啊

float x=2.5,y=4.7;
int a=7;
printf("%.2f",x+a%3*(int)(x+y)%2/4);

运行结果是2.50
解释如下:
a%3------1####整型
(int)(x+y)-----7####整型
a%3*(int)(x+y)----7####整型
a%3*(int)(x+y)%2-----1-----####整型
a%3*(int)(x+y)%2/4-------0####整型
####注意这里因为被除数1和除数4是整数,所以会自动进行类型转,因此是0,而不是0.25
####所以最后的结果是2.50,而不是2.75

你可以试着运行下面的程序:
float x=2.5;
int a=1;
printf("%.2f",x+a/4);
printf("%.2f",x+1/4);
/*printf("%.2f",1/4);*/####这里就会得不到结果

####类型转换是非常重要的,但也特别容易忽略...

#include <stdio.h>
int main()
{float x=2.5,y=4.7,answer;
int a=7;
printf("Answer is %f",x+a%3*(int)(x+y)%2/4);
return 0;
}

楼上的程序中错误地把a定义成float型了,float型数组是不能做%操作的

#include <stdio>
int main()
{float x=2.5,y=4.7,a=7,answer;
answer=x+a%3*(int)(x+y)%2/4;
printf("Answer is %f",answer);
getcha