雖然昨天已經看玩了資料型別,但是並沒有做習題,本以為會很輕鬆,誰知遇到了乙個神奇的問題:
書上說%f對應的是float 和double 兩種型別,lf%對應的是long double 這個很容易理解,在c prime plus中描述:
double a,b;
a=3.156e7
;scanf
("%f"
,&b)
;printf
("%f"
,a*b)
;
上述**的結果是混亂的;
我最初不知道是這裡出了問題,還以為是浮點型計算的問題,由於浮點型在記憶體中儲存方式的特點,我以為乘法計算必然出現錯誤。
於是我將b改為了int(b代表的引數是年份);
double a;
int b;
a=3.156e7
;scanf
("%d"
,&b)
;printf
("%f"
,a*b)
;
果然解決了問題,不過我很納悶,難道浮點數不能做乘法計算?那c語言也太low了,這點應該不算難。
於是我在網上查了浮點乘法,我發現我錯了,對不起小c!
實際是scanf如果對應變數是乙個double型別的話
必須使用%lf,這是我沒想到的,因為c prime plus的解釋讓我以為printf 和 scanf是一樣的,事實上這兩個函式也經常被一起提起。
明白了
double a,b;
a=3.156e7
;scanf
("%lf"
,&b)
;printf
("%f"
,a*b)
;
沒問題了
又或者
float a,b;
a=3.156e7
;scanf
("%f"
,&b)
;printf
("%f"
,a*b)
;
C語言資料儲存 浮點型
浮點數的儲存 ieee 745 乙個例項 關於e的一些注意點 1 float 3.4e 38 3.4e38 2 double 1.7e 308 1.7e308 3 long double 3.4e 4932 1.1e4932 我們以9.5為例,首先將乙個浮點型資料轉化為2進製形式,同時分為整數部分和...
C語言基礎 整型 字元型和浮點型
1.整型資料型別 c定義了5種整型資料型別。整型資料型別表 序號型別名稱 說明位元組數 取值範圍 1signed char 有符號的單位元組整數型別 1 128 127 2short int 短整型2 32768 32767 3int整型4 2147438648 2147438647 4long i...
C語言浮點型儲存到記憶體
將乙個float型轉化為記憶體儲存格式的步驟為 將這個實數的絕對值轉化為二進位制,轉化方法如下 例如11.25表示為二進位制數先將整數部分轉為二進位制 11 2 5 餘1 5 2 2 餘1 2 2 1 餘0 1 2 餘1 0結束 11的二進位制表示為 從下往上 1011 小數部分轉化為二進位制 用小...