c語言變數儲存的本質

2021-08-14 05:43:10 字數 665 閱讀 8783

1、給定的值若是帶(-符號),需將負數轉為補碼形式。若給定的數無符號表示(即無+-號,即為補碼)

負數補碼方法:除符號位外其餘位取反(反碼),再加1(反碼+1)。

(char) -1 二進位制儲存格式,變換如下:1000,0001->反碼:1111,1110->補碼:1111,1111 = 0xff

所以char a = -1;和char a = 0xff在計算機內的儲存是一致的。

2、符號位的擴充套件

即一種型別來表示另一種型別(兩種不同長度的表示),結果值不變。

對於無符號整型資料,要擴充套件成符號位的話,就是將擴充套件位補零,其他位保持不變。

對於有符號整型資料的符號擴充套件規律就是:其他位保持不變  原來符號位為1時,符號擴充套件位補1;原來符號位為0時,符號擴充套件位補0;

int a;

char b;

b = -1;

a = b;

b在記憶體儲存值:1111,1111 = 0xff。這裡用b給a賦值,不同型別賦值涉及型別變換,考慮符號位的擴充套件。增加的位補符號位,所以a的儲存:1111,1111,1111,1111,1111,1111,1111,1111 = 0xffffffff,表示為int 型別的-1,值不變

int main()  

C語言 指標變數本質

c語言指標是乙個經常使用的變數,可是經常在二級指標 指標中搞混,指標的本質就是乙個int型的變數,只不過這個變數是記憶體塊的位址,通過在這個變數前面加星號可以間接的訪問這個記憶體塊的內容。通過下面的示例可以清晰的明白指標的本質,include typedef struct teracher intg...

C語言之變數的本質

一 變數的本質 變數的本質是一段連續記憶體空間的別名,或者說變數是一段連續記憶體空間的門牌號,畫個圖 不管是標準資料型別,還是指標 指標也是一種資料型別 都是一樣的,都是記憶體空間的門牌號,千萬不好把變數畫到記憶體中去。二 通過變數往記憶體中進行讀寫資料 三 修改記憶體的方法 1 直接 int a ...

C語言提高03 變數本質

變數概念 既能讀又能寫的記憶體物件,稱為變數 若一旦初始化後不能修改的物件則稱為常量。變數本質 1 程式通過變數來申請和命名記憶體空間 int a 0 2 通過變數名訪問記憶體空間 一段連續 記憶體空間的別名 是乙個門牌號 3,修改變數有幾種方法?1 直接 2 間接記憶體有位址編號,拿到位址編號也可...