C 語言底層基礎知識 11 2

2021-09-29 06:43:41 字數 1505 閱讀 3738

long型別在不同的作業系統和平台上所佔位元組數不同,在linux i386 和windows上佔4個位元組,在linux x64上佔8個位元組。所有資料都是有位元組寬度大小的,在賦值在運算中,都可以發生變化。

資料型別的意義在於:節約記憶體方便訪問

##

移碼: 浮點數 + 指數+127。

1.把乙個整數賦值給char型別變數,只會把整數最低8個二進位制(最低乙個位元組)資料賦值給char變數

2.char如果要以%d %u的格式輸出 進行擴充套件 補最高位(符號位)

`

#include

int main (

)執行結果如下:

127127

-128

4294967168

1000 0000 以%d輸出,前面補最高位 ,因為在這個char型別的8個二進位制位中最高位是1 ,所以前面補1,最終執行結果為-128 。

對於unsigned 型別的數 ,前面補的1 沒有符號位,所以輸出的是乙個極大的數。

3.char變數賦值給 int/unsigned 擴充套件位 ,補符號位。

4.unsigned char如果要以%d %u的格式輸出 進行擴充套件補0。

5.unsigned char變數賦值給 int/unsigned 擴充套件位是0。

1.整數字面如果是【-2^31,2^31-1] 之間,則預設為int型別 。

2.不同型別的資料進行計算時,計算機會進行隱式轉換,比如char和int 之間的轉換,char會預設轉換成int型別進行計算,這個時候char型別因為只有乙個位元組,所以需要填補空位,填補規則如下:

①對於有符號位的數擴充符號位。

②對於無符號位的擴充0。

3.下面列舉的是一些計算機隱式轉換規則:

**char -->int -->long-->double

float -->doubleshort--> int

signed -->unsigned**

1.編碼包括原碼 ,反碼,補碼,移碼,asc碼

重要:計算機中用補碼來儲存資料  只有通過補碼 執行結果 才是正確的。

* 移碼: 浮點數 + 指數+127。

2.浮點數的編碼規則

float型別 : 1個符號位 ,8個指數字,23個尾數字。

double: 1個符號位 , 11個指數字,52個尾數字。

1.短路特性:

在包含&&,||的表達始中語句從左往又如果前面的表示式已經得到想要的結果,則後面的表示式終止執行。在&&和|| 同時出現的表示式中,||和&&同時出現時,&&的優先順序高於||,因此當||在前時,即使有結果也不能實現短路特性而應該先算&&左右的表示式。

C語言基礎知識

1 的問題。int i 1 int j 2 int k i j printf d k 輸出k為3。編譯原理有關編譯器在詞法解析的時候,對於運算子,總是查詢最大的匹配也就是說,i j,編譯器在找到 的時候,它不立即理解為 而是繼續下乙個字元,下乙個字元仍然是 可以組成 再往下的話便是 不成立了。所以i...

C語言基礎知識

一 位元組對齊 位元組對齊的原因,是機器在訪問記憶體中儲存的資料的高效性。通常機器是機器位數為自然邊界來訪問記憶體的,如果乙個4位元組整形數,所在的記憶體不在虛擬記憶體的自然邊界。則cpu需要讀多於一次的資料,這樣就降低了效率。所以,簡單地說,就是保證cpu指令在訪問資料的時候,能一次讀取,而不需要...

C語言基礎知識

1.進製 1 基數 基數為n,代表n進製 2 位權 從個位開始,向左依次編號為0,1.x 分別代表n進 制的x次 3 八進位制以0開頭,十六進製制以0x開頭 4 x 進製轉 進製 按權求和 十進位制轉 x進製 連除倒取餘 2.基本資料型別 3.常量 程式執行期間值不能被改變的量 分為 整型常量,浮點...