C 不同資料型別佔據的記憶體空間大小

2021-09-30 12:12:45 字數 949 閱讀 4168

首先這個沒有標準答案(或者說沒有乙個統一的標準), 除非我們加上限定詞, 就是在多少位的計算機上。 現在假設我們的電腦是32位機(事實上, 我的電腦是32 位的)。

(1)int 的表達用了4bytes, 表示的範圍還是很大的, 無符號的整型達到了0——429,467,295, 所以一般沒有什麼溢位問題, 不用考慮。

(2)signed  int能夠表示負整數。

(3)事實上, 有三種表示integer type , 分別是是short, int, long, 三者的size是按照 non-decreasing order。 int 一般代表short 或者long 在中的一種。一般而言, 你並不需要worry about 該選用哪乙個型別, 除非你對memory usage 的 特別注意, 或者你使用的數字十分大, short 不滿足要求, 非得使用long。類似的, 浮點數也有三種型別, 為float, double, long double, 精度也是逐漸公升高(none-decreasing order of precision)。 記住: 在計算機中, 對於實數(浮點數)的表示是不精確的。 這有點讓人confusing, 因為int的表示的精度是高於浮點數例如double的精度的, it is!

還有幾點注意, 參見下圖:

測試程式如下(code::blocks):

#include using namespace std;

int main()

執行結果如下:

java 變數的記憶體空間及資料型別

1 位元組 8位char 2 位元組 16位 short 2 位元組 16位int 4 位元組 32位long 8 位元組 64位float 4 位元組 32位double 8 位元組 64位boolean 取值 true 或者false 1 bit.問題 既然int在記憶體中占用4個位元組,flo...

記憶體空間,資料型別,static作用

記憶體圖 一 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結...

JS高階之 基本資料型別,引用型別,記憶體空間

三 資料比較 1 對於基本型別,和 是有區別的 1 不同型別 如number和string 間比較,之間比較,先轉化成同一型別,看 值 是否相等,如果型別不同,其結果就是不等 2 同型別比較,直接進行 值 比較 2 對於引用型別,和 是沒有區別的 進行 指標位址 比較 3 基本型別與引用型別比較,和...