给出以下代码段:
#include <iostream>
#include <cstring>
#include <cstdio>
int main()
{
char color[256];
float c,m,y,k;
const char* arguments = "0.8500 1 0 0 (Violet)";
memset(color, 0, 256 * sizeof(char));
if (sscanf(arguments, "%f %f %f %f %256c", &c, &m, &y, &k, color) == 5)
std::cout << color;
}
这已经在生产和工作至少10到15年(它输出颜色名称):
(紫罗兰色)
但是,使用最新的Microsoft Visual Studio编译器,或者在MSVC++15中,结果也发生了变化。
结果不是5,而是4。
使用gcc或clang的结果也是5,就像以前版本的msvc++。这段代码中有什么问题吗,或者有人知道编译器之间这些不同结果的原因吗?