%f 對應 float
%lf 對應 double
%lf 對應 long double
%e以科學計數法顯示
%g在%e和%f中擇短顯示
int m;
float n;
scanf("%lf%d", &n, &m);//輸入n=81,m=4
cout<<"n= "<解決辦法:1)將"%lf「改為"%f」;2)將float改為double
c++果然是非常微妙的語言,%f和%lf對於printf()和scanf()的效果是不同的。
事實上,對於printf(),無論是%f還是%lf,效果都是一樣的。
因為,遇到float,printf()會將float型別自動提公升到double,所以不會有什麼問題。
而且嚴格地講,printf()並沒有對於%lf的定義,雖然很多編譯器會接受,所以最好使用%f。
而對於scanf(),由於接受的是指標,並沒有型別提公升的說法,所以對於double就應該用%lf,float就是%f。
關於輸出用 lf和 f的問題
問 有人告訴我不能在printf中使用 lf。為什麼printf 用 f輸出double型,而scanf卻用 lf呢?答 printf的 f說明符的確既可以輸出float型又可以輸出double型。根據 預設引數提公升 規則 在printf這樣的函式的可變引數列表中,不論作用域內有沒有原型,都適用這...
關於 0x3f3f3f3f 的問題
0x3f3f3f3f是乙個很有用的數值,它是滿足以下兩個條件的最大整數。1 整數的兩倍不超過 0x7f7f7f7f,即int能表示的最大正整數。2 整數的每8位 每個位元組 都是相同的。我們在程式設計中經常需要使用 memset a,val,sizeof a 初始化乙個陣列a,該語句把數值 val ...
關於 wcout 輸出中文的問題
1.cout 場景1 在原始檔中定義 const char str 中文 在 vc 編譯器上,由於windows環境用 gbk編碼,所以字串 中文 被儲存為 gbk內碼,編譯器也把 str 指向乙個包含有 gbk編碼的唯讀記憶體空間 因為是const 用 cout 輸出 str 時,由於中文wind...