找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1400|回复: 13
打印 上一主题 下一主题
收起左侧

C语言asin()函数返回值的问题

[复制链接]
跳转到指定楼层
楼主
ID:970163 发表于 2021-11-29 12:43 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
asin()函数是math库中的反正弦函数,要求输入值在-1到1范围内。在51单片机,Keil c中,如果输入值超出这个范围,例如输入值为1.1,返回值是多少呢?代码如下
fdt=asin(1.1);
fdt为float变量,在内存中占四个字节,执行上面的代码后,fdt所在的四个字节会是什么值?
谢谢解答
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:624769 发表于 2021-11-29 14:55 | 只看该作者
keil 里写好代码,直接跑一下, 读一下fdt的 值不就知道了? 发帖到现在,结果早就出来了……
回复

使用道具 举报

板凳
ID:57657 发表于 2021-11-29 16:40 | 只看该作者
用 union 结构将 float 和 unsigned char [4] 数组联合起来,就可以读写具体字节值。
回复

使用道具 举报

地板
ID:970163 发表于 2021-11-29 17:00 来自手机 | 只看该作者
188610329 发表于 2021-11-29 14:55
keil 里写好代码,直接跑一下, 读一下fdt的 值不就知道了? 发帖到现在,结果早就出来了……

下载器坏了
回复

使用道具 举报

5#
ID:624769 发表于 2021-11-29 17:25 | 只看该作者

不需要下载,就在KEIL里面 CTRL + F5 不就可以了?
回复

使用道具 举报

6#
ID:883242 发表于 2021-11-29 21:47 | 只看该作者
mingw算asin(1.1)返回了#IND, indeterminate
回复

使用道具 举报

7#
ID:592807 发表于 2021-11-30 08:42 | 只看该作者

软件仿真啊
回复

使用道具 举报

8#
ID:844772 发表于 2021-11-30 14:47 | 只看该作者
返回值 NAN ( No A Number),C 值域错误都是返回这个的,还会设置 errno 和 FE_INVALID,不过Keil 我没试过。
回复

使用道具 举报

9#
ID:883242 发表于 2021-11-30 16:10 | 只看该作者
glinfei 发表于 2021-11-30 14:47
返回值 NAN ( No A Number),C 值域错误都是返回这个的,还会设置 errno 和 FE_INVALID,不过Keil 我没试 ...

实测返回的是IND,错误的严重程度比NAN轻微一些。
回复

使用道具 举报

10#
ID:844772 发表于 2021-11-30 16:46 | 只看该作者
Hephaestus 发表于 2021-11-30 16:10
实测返回的是IND,错误的严重程度比NAN轻微一些。

Windows将NAN显示为.#IND,表示”indeterminate",而Linux显示为nan,#INF才是比NAN轻微。
回复

使用道具 举报

11#
ID:883242 发表于 2021-12-2 17:47 | 只看该作者
glinfei 发表于 2021-11-30 16:46
Windows将NAN显示为.#IND,表示”indeterminate",而Linux显示为nan,#INF才是比NAN轻微。

我已经说了我的编译器是mingw,你查查这个编译器是干什么的再说什么Windows、Linux。
回复

使用道具 举报

12#
ID:844772 发表于 2021-12-3 09:09 | 只看该作者
Hephaestus 发表于 2021-12-2 17:47
我已经说了我的编译器是mingw,你查查这个编译器是干什么的再说什么Windows、Linux。

我认为虽然是编译器看到的数字,但实质是操作系统返回的,所以同样的编译器在不同操作系统返回值不一样,但各个编译器在WIN返回都一样。不过很久不用dos了,忘记这个系统返回值是多少。
回复

使用道具 举报

13#
ID:883242 发表于 2021-12-3 15:35 | 只看该作者
glinfei 发表于 2021-12-3 09:09
我认为虽然是编译器看到的数字,但实质是操作系统返回的,所以同样的编译器在不同操作系统返回值不一样, ...

MinGW跟DOS有一毛钱的关系吗?
回复

使用道具 举报

14#
ID:987646 发表于 2021-12-3 17:04 | 只看该作者
如果 x 的取值超出范围,那么 asin() 将发生域错误,此时返回值为 NaN。 NaN的定义见math头文件,.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表