printf の %lf について
TDM-GCC 5.1.0 で
以下のソースを
#include <stdio.h>
int main(void){
double v = 3.1415926;
printf("%f\n", v);
printf("%lf\n", v);
}
gcc -std=c99 -pedantic test.c
のようにc99 を指定してコンパイル実行すると
3.141593
0.000000
のように%lf指定した方が0.000000になってしまいます。
オプション指定なし(gcc test.c)でコンパイルした場合
3.141593
3.141593
のように期待する結果が得られます。

printf での %lf の使用はC99では適合のはずなのでおかしな結果です。
以前使用していた古いバージョンのGCC(MinGw gcc3.2) ではc99オプション使用時に%lfは使用できていましたので、
このgccでの固有バグではないかと思いますが、
当面(バグフィックスされるまで)困るので
回避方法を探しています。
C99オプションなしでコンパイルした場合問題ないので、
なんらかの方法で回避できるのではないかと思っています。