標(biāo)題: C語言asin()函數(shù)返回值的問題 [打印本頁]

作者: TLHZP    時(shí)間: 2021-11-29 12:43
標(biāo)題: C語言asin()函數(shù)返回值的問題
asin()函數(shù)是math庫中的反正弦函數(shù),要求輸入值在-1到1范圍內(nèi)。在51單片機(jī),Keil c中,如果輸入值超出這個(gè)范圍,例如輸入值為1.1,返回值是多少呢?代碼如下
fdt=asin(1.1);
fdt為float變量,在內(nèi)存中占四個(gè)字節(jié),執(zhí)行上面的代碼后,fdt所在的四個(gè)字節(jié)會(huì)是什么值?
謝謝解答
作者: 188610329    時(shí)間: 2021-11-29 14:55
keil 里寫好代碼,直接跑一下, 讀一下fdt的 值不就知道了? 發(fā)帖到現(xiàn)在,結(jié)果早就出來了……
作者: npn    時(shí)間: 2021-11-29 16:40
用 union 結(jié)構(gòu)將 float 和 unsigned char [4] 數(shù)組聯(lián)合起來,就可以讀寫具體字節(jié)值。
作者: TLHZP    時(shí)間: 2021-11-29 17:00
188610329 發(fā)表于 2021-11-29 14:55
keil 里寫好代碼,直接跑一下, 讀一下fdt的 值不就知道了? 發(fā)帖到現(xiàn)在,結(jié)果早就出來了……

下載器壞了
作者: 188610329    時(shí)間: 2021-11-29 17:25
TLHZP 發(fā)表于 2021-11-29 17:00
下載器壞了

不需要下載,就在KEIL里面 CTRL + F5 不就可以了?
作者: Hephaestus    時(shí)間: 2021-11-29 21:47
mingw算asin(1.1)返回了#IND, indeterminate
作者: 黃youhui    時(shí)間: 2021-11-30 08:42
TLHZP 發(fā)表于 2021-11-29 17:00
下載器壞了

軟件仿真啊
作者: glinfei    時(shí)間: 2021-11-30 14:47
返回值 NAN ( No A Number),C 值域錯(cuò)誤都是返回這個(gè)的,還會(huì)設(shè)置 errno 和 FE_INVALID,不過Keil 我沒試過。
作者: Hephaestus    時(shí)間: 2021-11-30 16:10
glinfei 發(fā)表于 2021-11-30 14:47
返回值 NAN ( No A Number),C 值域錯(cuò)誤都是返回這個(gè)的,還會(huì)設(shè)置 errno 和 FE_INVALID,不過Keil 我沒試 ...

實(shí)測返回的是IND,錯(cuò)誤的嚴(yán)重程度比NAN輕微一些。
作者: glinfei    時(shí)間: 2021-11-30 16:46
Hephaestus 發(fā)表于 2021-11-30 16:10
實(shí)測返回的是IND,錯(cuò)誤的嚴(yán)重程度比NAN輕微一些。

Windows將NAN顯示為.#IND,表示”indeterminate",而Linux顯示為nan,#INF才是比NAN輕微。
作者: Hephaestus    時(shí)間: 2021-12-2 17:47
glinfei 發(fā)表于 2021-11-30 16:46
Windows將NAN顯示為.#IND,表示”indeterminate",而Linux顯示為nan,#INF才是比NAN輕微。

我已經(jīng)說了我的編譯器是mingw,你查查這個(gè)編譯器是干什么的再說什么Windows、Linux。
作者: glinfei    時(shí)間: 2021-12-3 09:09
Hephaestus 發(fā)表于 2021-12-2 17:47
我已經(jīng)說了我的編譯器是mingw,你查查這個(gè)編譯器是干什么的再說什么Windows、Linux。

我認(rèn)為雖然是編譯器看到的數(shù)字,但實(shí)質(zhì)是操作系統(tǒng)返回的,所以同樣的編譯器在不同操作系統(tǒng)返回值不一樣,但各個(gè)編譯器在WIN返回都一樣。不過很久不用dos了,忘記這個(gè)系統(tǒng)返回值是多少。
作者: Hephaestus    時(shí)間: 2021-12-3 15:35
glinfei 發(fā)表于 2021-12-3 09:09
我認(rèn)為雖然是編譯器看到的數(shù)字,但實(shí)質(zhì)是操作系統(tǒng)返回的,所以同樣的編譯器在不同操作系統(tǒng)返回值不一樣, ...

MinGW跟DOS有一毛錢的關(guān)系嗎?
作者: 樂水    時(shí)間: 2021-12-3 17:04
如果 x 的取值超出范圍,那么 asin() 將發(fā)生域錯(cuò)誤,此時(shí)返回值為 NaN。 NaN的定義見math頭文件,.




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1