Windows/Visual Studio 在完美的 C 程序上出现问题

Windows/Visual Studio going wonky on a perfectly fine C program

好吧,不要自负,也许程序中有一些有趣的地方,但是 GCC 和 Clang 正在编译它并且 运行 按照 Ubuntu 20.04 和 Mac[=48= 上的预期进行编译] 10.14。 Visual Studio 2013 年在 Win 7 上?那是另一回事了。

    #include <stdio.h>
    #include <math.h>

    int main()
    {   double num1, num2, result; 
        printf("\nEnter numbers : ");
        scanf("%lf %lf", &num1, &num2);
        result = pow(num1,num2);
        printf("\n%s %lf\n","Result = ",result);
   }

酷吗?在 Mac/Linux 当我尝试 128^128 时,我得到了准确的答案 528294531135665246352339784916516606518847326036121522127960709026673902556724859474417255887657187894674394993257128678882347559502685537250538978462939576908386683999005084168731517676426441053024232908211188404148028292751561738838396898767036476489538580897737998336.000000

在 V.S.2013 和 运行 在同一台机器 (Win7Pro) 中编译时没有错误或警告,我得到:

52829453113566525 后跟许多零,这样答案的位数与上面的答案相同。

我可以验证它的相同代码,我在这些平台上使用相同的 .c 文件,我看到的唯一变量是编译器和 OS。像我这样的小开发者能做些什么来解决微软的烂摊子(看起来是这样)吗??

注意:所有操作系统均为 64 位。

编辑:这是来自较大项目 MathHack 的最小可重现示例,可在@ sites.google.com/view/mathhack 上找到完整的源代码,尽管我怀疑其余部分存在问题代码。

编辑 2:截图 -

在 Mac 上工作OSX 10.14 --

https://drive.google.com/file/d/1I0T75vJAUPnbK8y-oCkl_rHSqLTvCWzv/view?usp=sharing

不适用于 Win7 SP2 --

https://drive.google.com/file/d/148EuhwYlrWRom4fIPT_wfkxdSIYya3ep/view?usp=sharing

编辑 3:

这可能是 Microsoft 在 printf() 实现中的一个错误。嘘。我将升级到最新的 VS 以查看是否可以解决此问题。

这不是答案,但评论不显示图片:

Visual Studio 2019. 编译为 C 代码(/TC 选项)

结果:

IMO 没问题

SSE 实验:

int main()
{
    int sse = _set_SSE2_enable(1);
    double num1, num2, result;
    printf("\nEnter numbers : ");
    scanf("%lf %lf", &num1, &num2);
    result = pow(num1, num2);
    printf("\n SSE = %d, %s %lf\n", sse,  "Result = ", result);
    sse = _set_SSE2_enable(0);
    result = pow(num1, num2);
    printf("\n SSE = %d, %s %lf\n", sse, "Result = ", result);

}

x64 结果:

这似乎是 VS 2013 编译器的 printf() 实现中的错误。

按照@P__J__的建议,我安装了 VS 2019 Community 并解决了问题。谢谢,P__J__ .

对于此类问题似乎没有希望,只能忍受并转移到最新的 VS。