C C 型別轉換

2021-08-03 06:32:08 字數 758 閱讀 1681

#include 

#include

using

namespace

std;

int main()

程式的執行結果如下:

註解:

(int&)a 相當於將浮點數a的位址的前sizeof(int)個位元組當成int型的資料輸出。

float a = 1.0f在記憶體中的表示是0x3f800000,當(int&)a強制轉換時,會把記憶體值0x3f800000當作int型輸出,所以結果為1065353216(0x3f800000的十進位制表示)

那為什麼float a = 1.0f在計算機中的表示是0x3f800000呢?

這是由於浮點數在計算機中的表示方式有三部分構成

符號位:0代表正數,1代表負數

指數字:儲存科學計數法中的指數部分,採用移位的方式(127 + 指數)

尾數字:儲存尾數部分

即:符號位 + 指數字 + 尾數字。以1.0f而言,

符號位:0

指數字:01111111(127 + 0的二進位制)

尾數:(00000000000000000000000)

連起來就是111111100000000000000000000000

就是十進位制的1065353216

C C 型別轉換

如果乙個int型的變數值為5,則若使用強制型別轉換或者使用memcpy,則相當於直接copy記憶體中的值,若列印,則會列印5對應的ascii值 而若使用函式轉換,則函式會操作記憶體轉為ascii值的5,若列印,則直接為5。memcpy在一定程度上相當於強制型別轉換,但是可以制定拷貝的位元組大小,因此...

c c 型別轉換總結

1.複製 2.函式形參和實參結合 3.函式返回值返回時 4.if condition 語句 5.混合運算 觸發時機2 3本質上是複製。同1。1.複製操作 等號右邊型別 等號左邊型別。有四種情況 a 內建型別 內建型別 b 內建型別 自定義型別 在自定義型別中查詢相應的轉換建構函式,找到則呼叫裝換建構...

c c 強制型別轉換

q 什麼是c風格轉換?什麼是static cast,dynamic cast 以及 reinterpret cast?區別是什麼?為什麼要注意?a 轉換的含義是通過改變乙個變數的型別為別的型別從而改變該變數的表示方式。為了型別轉換乙個簡單物件為另乙個物件你會使用傳統的型別轉換操作符。比如,為了轉換乙...