簡體   English   中英

Windows/Visual Studio 在完美的 C 程序上出現問題

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

好吧,不要自負,也許程序中有些東西很有趣,但是 GCC 和 Clang 正在編譯它並按預期在 Z3D945423F8E9496C429A5D14.04 和 MacOS 上運行它。 Win 7 上的 Visual Studio 2013? 那是一個不同的故事。

    #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);
   }

涼爽的? On Mac/Linux When i try 128^128, I get the accurate answer 528294531135665246352339784916516606518847326036121522127960709026673902556724859474417255887657187894674394993257128678882347559502685537250538978462939576908386683999005084168731517676426441053024232908211188404148028292751561738838396898767036476489538580897737998336.000000

在 VS2013 中編譯時沒有錯誤或警告,並在同一台機器(Win7Pro)上運行,我得到:

52829453113566525后跟許多零,以使答案與上述答案具有相同的位數。

我可以驗證其相同的代碼,我在這些平台上使用相同的.c 文件,我看到的唯一變量是編譯器和操作系統。 像我這樣的小開發人員能做些什么來解決微軟的爛攤子(看起來是這樣)?

注意:所有操作系統都是 64 位的。

編輯:這是來自更大項目 MathHack 的最小可重現示例,可在@ sites.google.com /view/mathhack 獲得完整的源代碼可在該網站上找到,盡管我懷疑代碼的 rest 存在問題.

編輯 2:截圖 -

在 MacOSX 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 選項)

結果: 在此處輸入圖像描述

海事組織很好

上證實驗:

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 社區並解決了問題。 謝謝,P__J__。

這些問題似乎沒有希望,除非只是把它吸起來並轉移到最新的 VS。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM