请教thinking in c++上面的一个问题。多谢!

mre 2003-09-05 11:06:07
刚开始看thinking in c++
在thinking in c++ 的网站上下载的代码,但是在编译的时候有warning C4244: 'return' : conversion from 'double' to 'float', possible loss of data
和warning C4508: 'main' : function should return a value; 'void' return type assumed
请问第一个warning 是怎么回事?
还有第二个问什么thinking in c++中说main 的类型用int 呢?

这是代码:
extern int i; // Declaration without definition
extern float f(float); // Function declaration

float b; // Declaration & definition
float f(float a) { // Definition
return a + 1.0;
}
...全文
59 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mre 2003-09-06
  • 打赏
  • 举报
回复
是dev-cpp?
我新安装上这个试了试,果然没有,而且如果把main的类型改为viod 的啊,或出现提示:
`main' must return `int'
同时把1.0改为1.0f在vc下也没有warning 了
多谢大家指教,特别是aflyinghorse()
mre 2003-09-06
  • 打赏
  • 举报
回复
我用的vc++6
设置一般都是默认的。
aflyinghorse 2003-09-06
  • 打赏
  • 举报
回复
我在dec-cpp和vc6下试你的代码,都没有警告,
以上转换是隐试进行的,
如果有精度损失,则多数编译器会给出警告的。
aflyinghorse 2003-09-05
  • 打赏
  • 举报
回复
你用的是什么编译器?
我用dec-cpp编译
float f(float a) { // Definition
return a + 1.0;
}
没有warning
这其实是标准转换
mre 2003-09-05
  • 打赏
  • 举报
回复
但是这段代码却没有warning
#include<iostream>
using namespace std;
void main()
{
float a=1l;
float b;
b=1.0+a;
cout<<b<<endl;
}

aflyinghorse 2003-09-05
  • 打赏
  • 举报
回复
c++标准规定main有两种形式
int main()
int main(int argc,char *arhv[])

第一个问题
return a + 1.0;
其中a为float型,而1.0默认为double型的,所以a会被提升为double型
因此表达式a + 1.0结果的类型为double
但float所占内存字节数小于double,所以从double转换为返回值类型float会
可能会丢失精度,因此会有警告。
可以把返回值改为double或者强制转换(double)a + 1.0
zfbt 2003-09-05
  • 打赏
  • 举报
回复
第一个问题是因为在程序中return出去的变量的类型与函数定义的类型不一至!把函数定义的返回值的类型改为double就OK了!
main()函数的返回值可以是任意的,main也是一个函数啊,也是用户自定义的的啊,所以返回值是什么都可以!:)
代码下载地址: https://pan.quark.cn/s/48b01f0717eb 本文将详细研究有关rtl8822蓝牙驱动及其适配的相关信息。rtl8822是由Realtek公司设计的一种无线通信芯片,主要应用于提供Wi-Fi和蓝牙功能。该芯片被广泛应用于多种现代电子设备中,例如笔记本电脑、路由器、智能手机以及平板电脑等。 我们首先需要理解“驱动”的定义。驱动程序充当计算机硬件与操作系统之间的中介,负责将硬件指令解释为操作系统能够识别的语言。对于rtl8822芯片而言,蓝牙驱动是控制该芯片执行蓝牙通信的核心软件模块,它确保设备能够准确识别并连接其他蓝牙设备。 rtl8822驱动资料通常包括以下几个部分: 1. **Bluetooth Baseband (BB) 驱动**:这一部分负责处理蓝牙的底层通信,包括射频信号的编码与解码,以及数据包的发送和接收。 2. **Bluetooth Host Controller Interface (HCI)**:HCI层是蓝牙驱动的重要组成部分,它确立了蓝牙主机(例如CPU)与控制器(例如rtl8822芯片)之间的接口协议。借助HCI,应用程序能够与蓝牙设备进行互动,如配对、建立连接、传输数据等。 3. **移植文档**:移植文档是将rtl8822蓝牙驱动适配至不同操作系统或平台的关键指南,其中通常包含了详尽的步骤、注意事项以及可能遇到的问题的解决方案。这些文档有助于开发者理解驱动的工作原理,并根据目标系统进行必要的调整。 4. **芯片手册**:Realtek为rtl8822芯片提供的手册是开发和调试驱动的重要参考资料,其中涵盖了芯片的硬件特性、寄存器布局、接口规范、功耗管理等内容。熟悉这些信息能够帮助开发者更深入地...

65,213

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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