第三章c語言整型和浮點數型

2021-09-04 10:48:39 字數 1971 閱讀 6920

1。c語言可移植型別:stdint.h 和 inttypes.h

#include#includeint main(int argc, char const *argv)

2。程式中的警告,表示的意思為:儘管編寫的**有效,但有可能不是程式猿想要的

3。計算機把浮點數分成小數部分和指數部分來表示

在計算機中將浮點數按照ieee754標準來儲存

我們在將乙個浮點數進行儲存時,先將其轉換成2進製的浮點數表示形式,隨後按照圖中的部位分別來進行儲存。

如 float a = 3.5 這裡機器中float儲存為32位,所以

ieee 754規定,對於32位的浮點數,最高的1位是符號位s,接著的8位是指數e,剩下的23位為有效數字m。

我們的3.5轉化成二進位制為11.1 = 1.11 * 2^1

s = 0

由於m在儲存的時候,規格化的浮點數要求1≤m<2,也就是說,m可以寫成1.******的形式,其中******表示小數部分。ieee 754規定,在計算機內部儲存m時,預設這個數的第一位總是1,因此可以被捨去,只儲存後面的******部分。

m = 11

e的話,首先其為無符號數,但是轉化成二進位制科學計數法的時候其e可能出現負數,所以需要加上乙個中間值,32位數加上127,64位加上1023

e = 1+127 = 128

所以儲存的為

0 10000000 11000000 00000000 0000000
我們用程式來驗證一下記憶體中是否是這樣儲存的

由於我是小端機,所以儲存的時候從低位開始儲存為:

000000000 00000000 011000000 01000000
轉化成十進位制正好為 0 0 96 64

下圖為雙精度數在記憶體中的儲存方式

3。c標準對基本資料型別只規定了允許的最小大小

4。c編譯器在儲存short的時候自動將short的值轉化成int型別的值。因為int型別的值被認為是計算機處理整數型別時最高效的值。

5。char是8bit,所以如果像下面這樣賦值的話

char c = 'asd';

printf("%c\n", c);

結果為:d

想把24bit存到8bit中,8bit後面的字元會覆蓋前面的,所以最後列印出來的結果只是d

6。 八進位制和十六進製制都是 unsigned int 型別 用%u來列印

2.0e30是double型別 科學計數法的數可以用%e來將其列印出。

7。負數的儲存方式:取反加1

int a = -234

將234其轉換成二進位制形式,然後用比它多一位的九位數10000000 減去234的二進位制形式就是-234的儲存形式。

也就是傳說中的:取反加一

程式設計練習:

一年大約有3.156*10^7秒。程式設計提示使用者輸入身高,然後以厘公尺為單位顯示身高

#includeint main(int argc, char const *argv)

C語言第三章

main.c project1 created by sihan guo on 2019 06 13.include int main int argc,const char ar else 迴圈結構 當型 int icount 5 while icount 0 直到型迴圈結構 這個迴圈結構至少執行...

c語言複習第三章

算數運算子 對於 來說,結果的符號同被取餘數相同而且兩個運算元必須為整數 自增運算子 1.前 當前變數自動加1,然後參與表示式運算 2.後 先計算當前表示式的值當前表示式計算完畢後,變數自動加1 賦值運算子 復合賦值運算子 op 二元運算子 運算元1 op 運算元2 運算規則 運算元1 運算元1 o...

C 語言程式設計 第三章

函式呼叫 呼叫函式前要宣告函式原型 型別識別符號 被呼叫函式名 含型別說明的形參表 呼叫形式 函式名 實參列表 函式的遞迴呼叫 函式直接或間接呼叫自身 函式的引數傳遞 1.在函式被呼叫時才分配形參的儲存單元 2.實參可以是常量 變數或表示式 3.實參型別必須與形參相符 如果不相符,編譯器會先進行型別...