生萬物的C 001 資料型別的本質

2021-10-10 06:59:56 字數 809 閱讀 5303

要想真正的學好程式設計,一定要了解程式的底層運作
眾所周知,計算機的一切資料都是由0和1(物理上成為低電平和高電平)**段組成的。

那麼,我們如何判斷一串01**段是何種型別呢?比如,00010,用整型資料的讀取方式去解釋它,他就是2,用字元型資料的讀取方式去解釋它,他就是stx(乙個正文開始標誌)。可是如果用指令的方式去讀取它,他可能就是讓計算機自毀(單純舉個例子哈,切莫認真)。那麼00010到底是整形資料2還是字元型資料stx,或者是讓系統自毀?其實都對,到底是什麼就是取決於你讓計算機如何去讀取他們的。

好了,到這裡,相信以各位的聰明才智應該已經明白了。資料的型別取決於對它的讀取方式。如果還不夠清晰,那麼請看下面這張。

而不同的資料讀取的0和1的位數不同,比如短整型要讀取16位(2個位元組),長整型要讀取32(4個位元組)位,字元型要讀取8位(1個位元組)。

如果還是不好理解,那我這樣描述:比如節衛生紙就是乙個位元組

吃飯擦嘴衛生紙(字元型)要用一節(乙個位元組)

擦鼻涕衛生紙(短整型)要用兩節(兩個位元組)

擦屁股衛生紙(長整型)要用四節(四個位元組)

這樣說應該就清晰了吧。擦嘴紙是衛生紙,擦鼻涕紙也是衛生紙,擦屁股紙還是衛生紙。衛生紙就是衛生紙,只不過使用的方式不同給予了他不同的型別定義,讓他有了特殊的含義。

資料型別便是如此,資料就是那些記憶體中**段,不是0就是1,只不過不同的讀取與解釋方式讓它有了不同的意義(資料型別亦或指令型別)。這不同的讀取與解釋的方式,便是型別的本質。

資料型別的本質

先說結論 我們可以通過反彙編檢視程式對應的組合語言,了解其具體實現。讓我們先通過下面的例子了解下組合語言 void func mov dword ptr ebp 4 10h mov 是指令,意思是把資料從 源位址 移動到 目的位址 10h 就是 源位址 只不過這裡用了乙個常數而不是位址 dword ...

資料型別的本質

1 對於問題理解的深度,決定能不能成為乙個高手 2 概念不清晰,是產生bug的根源 本質 固定大小記憶體塊的別名 a 10 a a 陣列資料型別 關鍵點 1 陣列型別 2 陣列指標 3 陣列型別與陣列指標型別的關係 求資料型別佔的位元組數 sizeof 資料型別可以起別名嗎?tpedef 重定義資料...

js的本質 資料型別

js的本質就是處理資料,資料來自於後台的資料庫 所以變數就起到了乙個臨時儲存資料的作用。ecmascript制定了js的資料型別 資料型別 string,number,boolean,null,undefined,object是基本資料型別 基本資料型別就是簡單的賦值 function object...