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

のように期待する結果が得られます。

screen shot

printf での %lf の使用はC99では適合のはずなのでおかしな結果です。

以前使用していた古いバージョンのGCC(MinGw gcc3.2) ではc99オプション使用時に%lfは使用できていましたので、
このgccでの固有バグではないかと思いますが、
当面(バグフィックスされるまで)困るので
回避方法を探しています。

C99オプションなしでコンパイルした場合問題ないので、
なんらかの方法で回避できるのではないかと思っています。