发现了MinGW GCC的一个bug
我今天发现MinGW内置的打印函数__mingw_printf
在处理%a
格式的时候会产生不正确的输出。下面这段程序体现了这个问题。
#include <stdio.h>
#include <stdarg.h>
int main()
{
printf("%a %a\n", 1.0, 1.1);
__mingw_printf("%a %a\n", 1.0, 1.1);
return 0;
}
输出是
0x1.000000p+0 0x1.19999ap+0
0x0p-63 0x8.cccccccccccdp-3
因为浮点数1.0
显然不能表示为0x0p-63
,所以__mingw_printf
是错的。
这个错误我提交在 http://sourceforge.net/p/mingw-w64/bugs/459/ ,过几天我看看有没有人回应。
继续阅读 →