pow函式在強制型別轉換上的坑

2021-10-19 12:25:58 字數 618 閱讀 6858

對c語言pow函式的結果強制轉換成為int型別,有可能會產生乙個混亂的數:

測試**:

#include

#include

intmain()

執行結果:

2147483647

1000000000000.000000

2147483647(二十一億四千七百四十八萬三千六百四十七)是2147483646與2147483648之間的自然數,也是尤拉在2023年所發現的乙個梅森素數,它等於2^31-1,是32位作業系統中最大的符號型整型常量,例如在pascal語言中長整型的範圍是-2147483648~2147483647。

那麼既然這樣,就改一下測試程式:

#include

#include

intmain()

結果就對了:

1000000000000

1000000000000.000000

那麼這麼說,一開始的結果就是因為乘方運算的結果超過了所轉換的型別在機器上的範圍多導致的

pow函式可進行強制轉換

wust oj description 老師給小豪出了一道題目 給你兩個整數x和n 10 x 10,1 n 10 讓你求出x1 x2 x3 xn的結果。小豪現在陷入了困惑中,現在請你來幫他解決這個問題。input 輸入每行兩個整數x和n。output 對於每組測試資料,輸出一行計算結果。sample...

函式指標的強制型別轉換

先給出結論 函式指標是可以通過強制型別轉換而指向具有不同函式簽名的函式的,但是,轉換後,該函式指標沒辦法正確呼叫所指向的函式 不能給函式傳遞引數。下文給出得出這個結論的小故事。前幾天的任務要求寫乙個logger類,該類對外提供一些靜態的方法,但不生成物件。該類的主要作用是用來輸出訊息,不同的是可以由...

JS在if中的強制型別轉換

1.使用非嚴格相等進行比較,對 左邊的值進行型別轉換 2.在if判斷時,括號內的值進行型別轉換,轉化為布林值 今天,我就來聊一聊js在if中的強制型別轉換。其實,如果詳細要討論哪些值在if中強制轉換為true,哪些值在if中強制轉換為false,這很困難,因為,情況太多了。但是,我們可以輕鬆記住強制...