职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1672|回复: 1

输出的问题

[复制链接]
冬日暖阳 发表于 2009-9-11 10:47 | 显示全部楼层 |阅读模式
#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?
ling 发表于 2009-9-14 15:59 | 显示全部楼层
1.a%3 = 1

2. x+y = 7.2后 强制转换成int类型,所以最后结果=7

整条表达式就变成sum = x + 1 * 7 % 2 / 4;
1* 7 = 7 % 2 = 1 / 4 = 0(1 / 4 为什么=0, 因为结果是int类型)
所以 x = 2.5
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-3-28 20:12 , Processed in 0.114857 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表