a=b
b的值不會因為a得型別而改變。
a=b*c
是先計算b*c的結果,再賦值給a
b*c的結果不會因為a得型別而改變。
addr = 10*4096;
先不管addr是什麼型別,先計算10*4096的值,10*4096運算的結果本身與addr是什麼型別無關。
首先要搞清楚,10,4960是什麼型別。
根據c語言標準,字面值10進製常數,如果在int範圍,則型別是int.
10*4960
相當於((int)10)*((int)4096)=-24576
addr = 10*4096;
相當於addr = -24576
結果:addr的值為0xffffa000
再舉個例子:
float f;
f=1/10;
f 結果是0.0,而不是0.1。
因為是先計算1/10,再賦值給f,
而不是先轉換成浮點,再計算。
1/10本身的運算結果與f的型別無關。
改為addr=addr*7為什麼結果會對呢?
先看表示式addr*7,
addr的型別是long,7的型別是int.
按照c語言運算規則,long與int運算,int自動提公升至long。
addr*7相當於
((long)addr)*((long)7)
結果是對的,沒有溢位。
c語言中格式化
符號 作用 d 十進位制有符號整數 u 十進位制無符號整數 f 浮點數 s 字串 c 單個字元 p 指標的值 e 指數形式的浮點數 x,x 無符號以十六進製制表示的整數 0 無符號以八進位制表示的整數 g 自動選擇合適的表示法 說明 1 可以在 和字母之間插進數字表示最大場寬。例如 3d 表示輸出3...
C語言中格式字串
c語言中格式字串的一般形式為 標誌 輸出最小寬度 精度 長度 型別,其中方括號中的項為可選項。一 型別 我們用一定的字元用以表示輸出資料的型別,其格式符和意義下表所示 字元 意義 a 浮點數 十六進製制數字和p 計數法 c99 a 浮點數 十六進製制數字和p 計數法 c99 c 輸出單個字元 d 以...
C語言中格式化日期時間ctime 函式
c 語言中格式化日期時間 ctime 函式函式原型 char ctime const time t time 功能說明 將time t 型別日期和時間轉換為字串。返回值 返回由tm結構中的日期和時間轉換成的字串的位址,該字串的形式定義如下 ddd mmm dd hh mm ss yyyy 各字元的意...