首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
C/C++
C语言
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
请教书后一道习题
[已结贴,结贴人:charlie811hanson]
加为好友
发送私信
在线聊天
charlie811hanson
sheen
等级:
发表于:
2008-07-18 15:05:09
楼主
书后有一道习题是
x+a%3*(int)(x+y)%2/4;
设x=2.5,a=7,y=4.7
然后求表达式的值,我笔算出来的是2.500000
然后在dev上面跑了一把,好像结果是2.000000
程序如下
#include <stdio.h>
#include <math.h>
#include <conio.h>
int main()
{int x,a;float y,m;
x=2.5;
a=7;
y=4.7;
m=x+a%3*(int)(x+y)%2/4;
printf("%f\n",m);
getch();
}
问题点数:
20
回复次数:
8
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
pisces007
黑白关刀
等级:
发表于:
2008-07-18 15:08:04
1
楼 得分:
10
x=2.5; =〉问题是x是int型的。赋值后x变成了2
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
goodluckyxl
Doggy(Say what do, do what you say!)
等级:
发表于:
2008-07-18 15:09:43
2
楼 得分:
5
不行的最后你算到
a%3*(int)(x+y)%2的时候都是int型的计算了
1/4如果float运算会有0.25
但是如果是int除法= 0
你需要最终在除法前面强转类型
m=x+(float)(a%3*(int)(x+y)%2)/4.0;
这样看下
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
dahua010
平淡
等级:
发表于:
2008-07-18 15:11:33
3
楼 得分:
0
那是因为
int 类型的 x = 2.5 赋值以后x的值是2
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
iidioter
^ō^小眼豬
等级:
发表于:
2008-07-18 15:12:27
4
楼 得分:
0
飘下....
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
goodluckyxl
Doggy(Say what do, do what you say!)
等级:
发表于:
2008-07-18 15:12:36
5
楼 得分:
5
你还有类型初始化不对
一楼说的 那个
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
bargio_susie
平和 自制 审慎
等级:
发表于:
2008-07-18 15:12:44
6
楼 得分:
0
应该是int x = 2.5这里从double到int丢失了。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
Lstyk
等级:
发表于:
2008-07-18 15:33:39
7
楼 得分:
0
正如一楼三楼所说,程序中写错了吧~~
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
chizhiyi_heng
诚心
等级:
发表于:
2008-07-18 15:54:35
8
楼 得分:
0
我算出来的也是2.500000
你的程序把x定义为float
int 只能接受整数赋值
你赋值2.5就成了2
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友