#include <stdio.h>
int main() {
int a = 3;
float b = 6.412355;
printf("%.*f\n",a,b);
return 0;
}
爲什麼輸出是;C格式說明符不明確
6.412
。*這裏有什麼影響?
#include <stdio.h>
int main() {
int a = 3;
float b = 6.412355;
printf("%.*f\n",a,b);
return 0;
}
爲什麼輸出是;C格式說明符不明確
6.412
。*這裏有什麼影響?
.
表示下一個字符表示要使用的精度。 *
表示從參數列表讀取值;在你的情況下,它會讀取a
。值爲3,所以下一個參數打印到3位小數位。
如果你有一個= 4,答案是6.4124,但我期待6.4123 – user2799508
這是什麼文件*說*你應該期望? –
@ user2799508:printf輪到最近。由於下一個數字是'5',這意味着,所以'6.4124'是正確的輸出,精度爲4位十進制數字。 –
#include <stdio.h>
int main() {
int a = 3;
float b = 6.412355;
printf("%.*f\n",a,b);
return 0;
}
它substiutes的a
值到*
,意味着精度。
在printf
函數中,這個問題的格式%[flags][width][.precision][length]specifier
是.precision
,它有兩個選擇號碼或*
。
當*
,這意味着精度未在格式字符串中指定,而是作爲必須格式化的參數前面的附加整數值參數指定。
這是迄今爲止最好的答案。新手可以學習的最好的方法是**閱讀文檔**。這就是答案的內容,它不僅告訴OP做到這一點,而且不僅爲相關案例提供了相關文檔的鏈接,而且還提供了整個主題的「最佳」在線文檔收集區。不幸的是@chaoqi選擇遵循downvoter的建議,並給OP一個準備好的烤魚,而不是教OP如何釣魚。所以,刪除我的upvote。 :-( –
我應該怎麼說.... – George
跟着你的心:) –
[這](http://www.cplusplus.com/reference/cstdio/printf/)是谷歌**的printf C的第一結果**。 –
而不是cplusplusref,更喜歡社區驅動的** [cppreference網站](http://en.cppreference.com/w/cpp)**。它更準確。 –