使用“0.12”的简单“C”程序在cygwin上获得了奇怪的GCC结果

时间:2016-09-07 15:08:54

标签: c windows gcc cygwin

当我自己为我的IoT产品制作ftoa功能时,我在gg上遇到了一个奇怪的问题。

下面的程序应该为零。但结果是1.000000!?

gcctest.c

#include <stdio.h>

int main()
{
    double f = 2.0;
    int d;
    d = (int)f;  // d = 2
    f -= d;      // f = 0.0
    printf("%lf\n", f);
}

如果你尝试f = 0.11或0.13,你就会正确地得到零。

由于我怀疑“d =(int)f”的“强制转换”操作,我尝试了下面的测试程序。

gcctest2.c

$ gcc --version
gcc (GCC) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ cygcheck -c cygwin
Cygwin Package Information
Package              Version        Status
cygwin               1.7.28-2       OK

在这种情况下,结果为零。似乎“gcctest.c”的程序存在一些问题。

这是已知的问题吗?你知道如何避免这种情况得到正确的结果吗?如果我能得到任何帮助,我将不胜感激。

gcc和cygwin的版本如下。

type ValidTagOptions = "img" | "input";
function createElement(tagName: ValidTagOptions): HTMLImageElement;
function createElement(tagName: ValidTagOptions): HTMLInputElement;

谢谢,芋头

0 个答案:

没有答案