| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 618 人关注过本帖
标题:[求助]这个为什么错了?
只看楼主 加入收藏
dengtc
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2007-5-11
收藏
 问题点数:0 回复次数:6 
[求助]这个为什么错了?
求助]这个为什么错了?
我用的是VC++2005
#include <iostream>
using namespace std;
struct inflatable
{
char name[20];
float volume;
double price;
};
int main()
{
inflatable guest=
{
"Glorious Gloria",
?1.88,
29.99
};
inflatable pal=
{
"Audacious Arthur",
?3.12,
32.99
};
cout<<"Expand your guest list with "<<guest.name<<" and "<<pal.name<<"!\n";
cout<<"You can have both for $"<<guest.price+pal.price<<"!\n";
return 0;
}
警告 1 warning C4305: “初始化”: 从“double”到“float”截断 e:\microsoft visual studio 2005 简体中文专业版\vc++2005\项目\4.11\4.11\structur.cpp 14
警告 2 warning C4305: “初始化”: 从“double”到“float”截断 e:\microsoft visual studio 2005 简体中文专业版\vc++2005\项目\4.11\4.11\structur.cpp 20
请各位大哥指点指点!!

#include <iostream>
using namespace std;
struct inflatable
{
char name[20];
float volume;
double price;
};
int main()
{
inflatable pal[2]=
{
{"Glorious Gloria",1.88,29.99},
{"Audacious Arthur",3.12,32.99}
};
cout<<"Expand your guest list with "<<pal[0].name<<" and "<<pal[1].name<<"!\n";
cout<<"You can have both for $"<<pal[0].price+pal[1].price<<"!\n";
return 0;
}
这个和上面出来的结果一样,哪个更好些?

我用的是VC++2005

请各位大哥指点指点!!

#include <iostream>
using namespace std;
struct inflatable
{
char name[20];
float volume;
double price;
};
int main()
{
inflatable pal[2]=
{
{"Glorious Gloria",1.88,29.99},
{"Audacious Arthur",3.12,32.99}
};
cout<<"Expand your guest list with "<<pal[0].name<<" and "<<pal[1].name<<"!\n";
cout<<"You can have both for $"<<pal[0].price+pal[1].price<<"!\n";
return 0;
}
这个和上面出来的结果一样,哪个更好些?不过2个程序都出现2个警告!!警告如下:
警告 1 warning C4305: “初始化”: 从“double”到“float”截断 e:\microsoft visual studio 2005 简体中文专业版\vc++2005\项目\4.11-\4.11-\-.cpp 13
警告 2 warning C4305: “初始化”: 从“double”到“float”截断 e:\microsoft visual studio 2005 简体中文专业版\vc++2005\项目\4.11-\4.11-\-.cpp 14

[此贴子已经被作者于2007-5-23 18:36:48编辑过]

搜索更多相关主题的帖子: inflatable include double 
2007-05-23 18:22
lovehug
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-3-6
收藏
得分:0 

我用Visual C++ 6.0运行出来就是对的!

2007-05-23 18:26
dengtc
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2007-5-11
收藏
得分:0 
那是不是我的VC++2005有问题呢?总是出现2个警告!!!

2007-05-23 18:38
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
以下是引用dengtc在2007-5-23 18:38:07的发言:
那是不是我的VC++2005有问题呢?总是出现2个警告!!!

没有问题,这正说明vc++2005比vc++6.0编译更严密啊!

浮点数字面值常量,也就是你直接打一个浮点数10.1,编译器会把它识别成const double类型,所以这里它提示你从double赋值到float截断。

解决办法:1. {"Glorious Gloria",1.88f,29.99},
{"Audacious Arthur",3.12f,32.99}

2.double volume;


[此贴子已经被作者于2007-5-23 19:53:07编辑过]


Fight  to win  or  die...
2007-05-23 18:50
dengtc
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2007-5-11
收藏
得分:0 
哦!
谢谢!aipb2007!
那是用第一种方法好还是第二种好?

2007-05-23 20:30
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
回复:(dengtc)哦!谢谢!aipb2007!那是用第一种方...
根据你的需要!你觉得float已经足够了,那就第一种吧!

不过我推荐第2种,还有,以后用浮点数最好都用double(不是绝对哦,我指某些简单的程序),这样一般不会出现丢失精度引起的错误(这种错误,有时不易发觉)。


Fight  to win  or  die...
2007-05-23 20:55
dengtc
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2007-5-11
收藏
得分:0 
哦!
谢谢!aipb2007

2007-05-24 16:44
快速回复:[求助]这个为什么错了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023976 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved