gcc中的类型牵制装换

shuven 2007-11-13 06:25:21
本人新手,请求帮助,
在linux下,用gcc编译器,编译一下代码:
#include <stdio.h>
int main()
{
double a=2.5;
printf("%d\n",(int)a);
return(0);
}

结果是:2。
请高手指教,为什么强制转换后的结果是2,而不是3,按照四舍五入的原则,不应该是3吗??
本人初来,分数有限,见谅。
...全文
43 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuven 2007-11-13
  • 打赏
  • 举报
回复
多谢楼上各位兄弟,受教了,
原来一直是我理解错了,多谢。
飞哥 2007-11-13
  • 打赏
  • 举报
回复
如果你想4舍5入的话,加上0.5就可以了

#define ROUND(x) (int)((x)+0.5)

#include <stdio.h>
int main()
{
double a=2.5;
printf( "%d\n ",ROUND(a) );
return(0);
}
飞哥 2007-11-13
  • 打赏
  • 举报
回复
因为小数部分截断
wangw37 2007-11-13
  • 打赏
  • 举报
回复
linux有这个四合五入的规定么? 写了挺久程序, 似乎没有发现;
这种转换就是直接取整数部分, 没有四舍五入的.
(int)2.5 = 2;
(int)-2.5 = -2;
独孤过儿 2007-11-13
  • 打赏
  • 举报
回复
强制转换的时候只取整数部分,而不是四舍五入

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧