【发布时间】:2018-05-07 22:44:12
【问题描述】:
我有一些读取字母值对的代码。可以简化为:
float value = 0.0;
sscanf("0X80.9", "%f", &value);
在 Visual Studio 2013 中,值 = 0
在 Visual Studio 2015 及更高版本中,值 = 128.5625(即十六进制的 0x80 = 十进制的 128)
有人知道为什么会这样吗?更重要的是,有人知道如何让它像以前一样工作吗?
【问题讨论】:
-
您是用 C 还是 C++ 编程?这些事情可能非常依赖于语言。 C 和 C++不是同一种语言,它们非常不同。
-
@Someprogramerdude 这个特别的东西不能。
-
它似乎在读取你的十六进制浮点值,因为你写了一个十六进制浮点值;为什么会有问题?
-
我在 C 和 C++ 中尝试过并得到相同的结果。
-
这是一个问题,因为实际情况类似于:“W1V0X80”等。我想将“前缀”和值读入字符和相关值。两个版本的编译器之间的行为发生了变化,实际上其他编译器也显示出不同的行为。
标签: c scanf format-specifiers