gpt4 book ai didi

c - VC 拒绝十六进制浮点常量

转载 作者:太空狗 更新时间:2023-10-29 14:56:24 24 4
gpt4 key购买 nike

我正在编写一个程序,将 CIL 字节码转换为 C 源代码以供机器使用。我担心由于与十进制之间的转换而导致的浮点常量不准确。在做了一些研究之后,我发现 C(但不是 C++)应该能够接受浮点常量的十六进制表示法。

我决定尝试一下,但无论我尝试什么,MS VC9 都会给我错误。这是我正在尝试的:

// Switches: /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /FD /MDd /Fo"Debug\\" /Fd"Debug\vc90.pdb" /W3 /nologo /c /ZI /TC

#include <tchar.h>
#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{
double d = 0x1.0p+1; // error C2059
//double d = 0x1p+1; // doesn't work either
//double d = 0x1p1; // doesn't work either
//double d = 0x1.0p1; // doesn't work either

printf( "%f\n", d );

return 0;
}

我希望它能从 1x2^1 打印出 2,但它却给我这个编译器错误:

error C2059: syntax error : 'bad suffix on number'

我意识到 C++ 不支持这种语法(或者我已经读过,)但是请注意这是用 /TC 编译的所以它应该是直接的 C,我使用了 *.c 文件名也是很好的衡量标准。

我是不是哪里做错了,还是 VC9 不符合标准?

最佳答案

您的代码没有任何问题。浮点十六进制常量在 C99 标准中被添加到 C 中,但 MSVC 仅支持旧的 C90 标准(有一些扩展,如 // 单行注释和 long long 类型)。

关于c - VC 拒绝十六进制浮点常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18180116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com