C语言float数组的问题

_郭 2015-11-21 12:25:11
#define YEARS 5  
#define MONTHS 12
void main()
{
float rain [YEARS] [MONTHS] = {
{8.4,6.4,6.5,7.4,8.5,3.6,3.6,3.5,7.4,6.7,5.7,5.9},
{7.6,8.6,8.9,7.6,7.9,4.8,4.8,4.9,7.6,8.7,9.7,9.9},
{8.6,9.6,9.2,8.6,8.2,2.9,2.9,2.2,8.6,9.8,2.8,2.2},
{4.6,9.6,9.5,4.6,4.5,5.9,5.9,8.5,4.6,9.4,5.4,5.5},
{4.6,2.6,2.5,4.6,4.5,5.2,5.2,8.5,4.6,2.4,5.4,5.5}
} ;

引用
1>c:\users\administrator\documents\visual studio 2008\projects\test_1119\test_1119\01.cpp(12) : warning C4305: “初始化”: 从“double”到“float”截断


为什么会这样提示,以上每个元素都不超出float的表示范围。
...全文
589 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 2015-11-21
  • 打赏
  • 举报
回复
2.2这种常量本身就是double类型,float类型需要在后面加f,写成2.2f
_郭 2015-11-21
  • 打赏
  • 举报
回复
引用 5 楼 paschen 的回复:
这是语法规定,浮点字面值可以用十进制或科学计数法(指数用E或e)表示,默认为double,在数值后加F或f表示单精度,加L或l表示扩展精度
了解了,谢谢
fefe82 2015-11-21
  • 打赏
  • 举报
回复
不是因为超范围。而只是单纯的因为你用 double 来初始化 float 。 在每个常量后面加一个 f 吧。 4.6f 2.6f 5.2f ...
paschen 2015-11-21
  • 打赏
  • 举报
回复
引用 3 楼 zyzy577048814 的回复:
[quote=引用 2 楼 paschen 的回复:] 2.2这种常量本身就是double类型,float类型需要在后面加f,写成2.2f
2.2为啥是double型而不是float?有点糊涂了。。。。。。[/quote] 这是语法规定,浮点字面值可以用十进制或科学计数法(指数用E或e)表示,默认为double,在数值后加F或f表示单精度,加L或l表示扩展精度
fefe82 2015-11-21
  • 打赏
  • 举报
回复
引用 3 楼 zyzy577048814 的回复:
[quote=引用 2 楼 paschen 的回复:] 2.2这种常量本身就是double类型,float类型需要在后面加f,写成2.2f
2.2为啥是double型而不是float?有点糊涂了。。。。。。[/quote] http://en.cppreference.com/w/c/language/floating_constant
zyzy577048814 2015-11-21
  • 打赏
  • 举报
回复
引用 2 楼 paschen 的回复:
2.2这种常量本身就是double类型,float类型需要在后面加f,写成2.2f
2.2为啥是double型而不是float?有点糊涂了。。。。。。

69,377

社区成员

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

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