2013-12-16 68 views
-1
#include <stdio.h> 

int main() { 
    int a = 3; 
    float b = 6.412355; 
    printf("%.*f\n",a,b); 
    return 0; 
} 

爲什麼輸出是;C格式說明符不明確

6.412 

。*這裏有什麼影響?

+6

[這](http://www.cplusplus.com/reference/cstdio/printf/)是谷歌**的printf C的第一結果**。 –

+1

而不是cplusplusref,更喜歡社區驅動的** [cppreference網站](http://en.cppreference.com/w/cpp)**。它更準確。 –

回答

2

.表示下一個字符表示要使用的精度。 *表示從參數列表讀取值;在你的情況下,它會讀取a。值爲3,所以下一個參數打印到3位小數位。

+0

如果你有一個= 4,答案是6.4124,但我期待6.4123 – user2799508

+1

這是什麼文件*說*你應該期望? –

+0

@ user2799508:printf輪到最近。由於下一個數字是'5',這意味着,所以'6.4124'是正確的輸出,精度爲4位十進制數字。 –

1
#include <stdio.h> 

int main() { 
int a = 3; 
float b = 6.412355; 
printf("%.*f\n",a,b); 
return 0; 
} 

它substiutes的a值到*,意味着精度。

2

printf函數中,這個問題的格式%[flags][width][.precision][length]specifier.precision,它有兩個選擇號碼或*

*,這意味着精度未在格式字符串中指定,而是作爲必須格式化的參數前面的附加整數值參數指定。

有關更多細節,參見http://www.cplusplus.com/reference/cstdio/printf/

+0

這是迄今爲止最好的答案。新手可以學習的最好的方法是**閱讀文檔**。這就是答案的內容,它不僅告訴OP做到這一點,而且不僅爲相關案例提供了相關文檔的鏈接,而且還提供了整個主題的「最佳」在線文檔收集區。不幸的是@chaoqi選擇遵循downvoter的建議,並給OP一個準備好的烤魚,而不是教OP如何釣魚。所以,刪除我的upvote。 :-( –

+0

我應該怎麼說.... – George

+0

跟着你的心:) –