對於指標的強制型別轉換,結果會是什麼?

時間 2021-06-09 09:57:26

1樓:

計算機的標量可以理解為只有整型和浮點型兩種型別,整型由CPU的ALU計算,而浮點型由CPU的浮點運算器來運算。

大部分整型被實現為補碼,從機器的角度來看,補碼不需要考慮整數的正負,加法原則是一致的。

一般只有整型和浮點型進行相互轉換時,CPU才會呼叫轉換的指令更改編碼,其它情況下只是更改對乙個二進位制數的「解釋」——二進位制本身是不會變的。

例如在這個例子中,只有指標位址的轉換,可以認為只是解釋層面的轉換,記憶體中的數並沒有變化。

那麼:整型a在記憶體中,被表示為0x00000001。

它在浮點中是什麼涵義呢?

按照IEEE754的標準,二進位制的00...(省略31個0)1,屬於非規格化浮點數,它等於

V=M * 2 ^ E,(符號位為1) 其中:

E=1-Bias, 對於32位浮點數,Bias為127,所以E=-126

M=由後23位組成的二進位制小數,等於0.00000000000000000000001b,也就是2^(-23)

代入上式,得到:

V=2^(-23) * 2^(-126) = 2 ^ (-149) = 1.401e-45

2樓:OFFLINE

記憶體中放的是二進位制資料.

int用二進位制儲存, float也用二進位制儲存.

這個強制轉換沒問題的.

你只要知道, 同樣的二進位制, 對於int是什麼規則, 對於float是什麼規則就好了.

參考 : "浮點數在計算機中儲存方式"

強制型別轉換是否改變變數的位元表示?

Shiwei Wang 嚴格來說,要輸出unsigned short int,format應該是 hd RednaxelaFX 有時候C的cast是會讓bit value發生變化的,例如整型與浮點型之間的轉換。inti floatf float i bitpattern changes 此時要想保持...

C語言中強制型別轉換是如何實現的?

涇渭漳淮 強制轉換時怎麼實現的?通常是由單獨的CPU指令實現的,也就是硬體實現的。5立方之後是125,125開立方之後是幾?嚴格的數學上應該是5,但實際上計算機有精度的限制,計算結果會有誤差,計算機計算得到的結果可能是4.9999999999999435452340065849之類的,將這個值直接取...

未定義double卻出現他的強制型別轉換提示

大衛德劉 除號左邊float 右邊3.0被認為是doublefloat double得到的結果是double然後你把這個double賦值給了乙個float變數,所以會提示你已經有人提到了 3.0f就可以,因為3.0f是乙個float,float float得到float,就沒有轉換了 開開心心學做人...