doubleは常に%lfとするべきなのか
c言語についての質問です.疑問と自分なりの解答を書くので訂正,アドバイスなどを頂けるとありがたいです.
以下のプログラムのようにprint関数でdoubleのフォーマットを%fとします.scanのフォーマットを%lfとします.問題なく通ります.しかし,scanの方のフォーマットを%fにすると
format ‘%f’ expects type ‘float *’, but argument 3 has type ‘double *’
と警告が出て,プログラムも正常にaに値を格納しません.なぜでしょう?
これは,変数ならfloat-double間の拡張をコンパイラが勝手にやってくれるが,ポインタの拡張は勝手にやれないから駄目,という理解でよろしいのでしょうか.
このことから,double変数の表示には%fでもいいが,%lfを常に使う方が正統な書き方だという理解でよろしいのでしょうか.常に%lfを使うと何か問題なのでしょうか.
お返事お待ちしております.
#include <stdio.h>
int main()
{
double a = 2.5;
char in_line[50];
fprintf(stdout, "a is %f\n", a);
fprintf(stdout, "type any double: ");
fgets(in_line, sizeof(in_line), stdin);
sscanf(in_line, "%lf", &a);
fprintf(stdout, "a is %f\n", a);
return 0;
}