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.實參型別必須與形參相符 如果不相符,編譯器會先進行型別...