我試圖用scanf
不斷讀取用戶值double
。Scanf不能讀取雙精度值
代碼:
printf("Enter A value: \n");
double input;
int result = scanf("%f", &input);
printf("INPUT: %f\n", input);
輸出是
INPUT: 0.000
我試圖用scanf
不斷讀取用戶值double
。Scanf不能讀取雙精度值
代碼:
printf("Enter A value: \n");
double input;
int result = scanf("%f", &input);
printf("INPUT: %f\n", input);
輸出是
INPUT: 0.000
你騙編譯器:當掃描,%f
說你提供一個指向float
。但是你提供了一個指向double
的指針。
要修復,請使用%lf
或聲明input
爲float
。
請注意,存在與printf
格式不對稱的情況,對於float
和double
兩個參數均使用%f
參數。這是有效的,因爲printf
參數被提升爲double
(並且不是指針)。
我試圖讀取一個雙精度值連續從用戶使用scanf。
要做到這一點,你需要一個循環,如下所示:
while(scanf("%lf", &input) == 1) {
//code goes here...
printf("INPUT: %lf\n", input);
//code goes here...
}
需要注意的是,由於原始類型的input
爲double
,你需要使用,而不是%lf
用於float
%f
(%f
)。
它應該是'!= EOF'還是'== 1'? –
@FiddlingBits,你是正確的,答案已更新。如果在任何轉換之前發生輸入故障,[scanf返回宏EOF的值。否則,scanf會返回分配的輸入項的數量,如果出現早期匹配故障,則返回的數量可能少於規定的數量,甚至爲零。](http://www.rowleydownload.co.uk/arm/documentation/ ?index.htm的HTTP://www.rowleydownload.co.uk/arm/documentation/scanf.htm) –
爲什麼結果是int而不是double? – Michi
@ user3121023我只是很想知道OP的意圖。 :) – Michi