有没有人可以解释一下这个表达式是怎么算的
#include <stdio.h>int main(void)
{
int b = 7;
float a = 2.5;
float c = 4.7;
printf("%f\n", a + (int)(b / 2 * (int)(a + c) / 2) % 4);
return 0;
} 为什么最后的结果是4.500000 (int) a+c == (int) 2.5 + 4.7 == 7
里面变成 7 / 2 * 7 / 2 == 3 * 7 / 2 == 10
10 % 4 == 2
a + 2 == 4.5
%f 默认取 6 位
所以结果就这样 本帖最后由 jhq999 于 2022-7-14 10:55 编辑
(int)(b / 2 * (int)(a + c) / 2) % 4)=(int)(7/2* (int)(7.2) / 2) % 4)=(int)(7/2* 3 % 4)=(int)(10.5% 4)=(int)(2.5)=2
2.5+2=4.5 柿子饼同学 发表于 2022-7-14 10:46
(int) a+c == (int) 2.5 + 4.7 == 7
里面变成 7 / 2 * 7 / 2 == 3 * 7 / 2 == 10
10 % 4 == 2
我不理解,不应该是2.5+ (int)(7/2*7/2)%4==2.5+(int)(3.5*7*2)%4==2.5+(int)(12.25)%4==2.5+12%4==2.5+0=2.5吗? 柿子饼同学 发表于 2022-7-14 10:46
(int) a+c == (int) 2.5 + 4.7 == 7
里面变成 7 / 2 * 7 / 2 == 3 * 7 / 2 == 10
10 % 4 == 2
我懂了,因为b是int型 1613551 发表于 2022-7-14 10:54
我不理解,不应该是2.5+ (int)(7/2*7/2)%4==2.5+(int)(3.5*7*2)%4==2.5+(int)(12.25)%4==2.5+12%4= ...
对 , int / int 结果还是 int 会直接砍掉小数部分 , 不是四舍五入
页:
[1]