输出的问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 17:18:36
#include "stdio.h"
int main(void)
{
float x=2.5,y=4.7,sum;
int a=7;
sum=(x+a%3*(int)(x+y)%2/4);
printf("%f\n",sum);
return 0;
}

最后输出的结果为 2.500000

sum=(x+a%3*(int)(x+y)%2/4);的x后面还要加一个数,而x又等于2.5,那最后输出怎么是2.5?难道x后面加了0?

a%3=1
(int)(x+y)= 7 , x+y 的结果, 取整数

(int)(x+y)% 2 = 1

(int)(x+y)% 2 / 4 = 1/4 =0 这里是整数运算

结果是对的

首先,根据运算顺序,先计算a%3和(x+y)%2分别等于1和7%2等于1(这边才是关键所在,由于前面有一个强制定义符(int),所以之后的都以整形数计算)1/4等于0前面不管什么数,乘以0都是0,所以sum==x,输出为2.500000

a%3=1;
x+y=7.2;
(int)(x+y)=7;
7%2=1;
所以
a%2*(int)(x+y)%2=1*1=1
1/4=0;
最后x+0懂了吧…
唉怎么没分

x加的的确是0,整型求余后结果不是0就是1,然后在除四,的到的是0

是加了0;
因为1/4=0;
本来1/4=0.25;
但两个int型的运算结果还是int型;
所以小数点后面的都被去掉了;
所以是0;