C語言資料運算中格式問題注意

2021-06-05 15:40:15 字數 711 閱讀 2192

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 各字元的意...