変数にdoubleをスキャンできません。ダブルは入力できません。どうして?
これは私のコードですが、非常に簡単です。
gcc -Wall -Wextra -Wpedantic -ansi -c double.c
#include <stdio.h>
int main() {
double f;
scanf("%lf", &f);
printf("%lf\n", f);
return 0;
}
入力:5.5(またはその他の番号)
出力:0(常に)私が使用しています
(GCC)4.9.3私はコマンドでそれを構築しました。
あなたのコードは現代Cで完璧です(1999年以降は正常です)。しかし、あなたは古風なC89/90モードでそれをコンパイルしているようです。当時 'printf'は'%lf'形式をサポートしていませんでした。注意してください、あなたのバージョンは実際には*好ましい*ですが、その歴史的な特質を覚えておく必要があります。本当の問題は、なぜ古風なモードでコンパイルしているのですか? – AnT
@AnT私はそれを知らなかった。しかしgccがデフォルトでC99モードを設定しないのはなぜですか? –
GCCは最終的にはC11ベースのCの方言に変わりました。これはデフォルトで1ヶ月前(または数ヶ月前)に行われました。その前に、彼らは伝統的なコードの互換性の理由などのためにC89/90に専念していました。 – AnT