[英]Malloc(0)ing an array in Windows Visual Studio for C allows the program to run perfectly fine
[英]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);
}
這似乎是 VS 2013 編譯器的 printf() 實現中的一個錯誤。
正如@P__J__ 所建議的那樣,我安裝了 VS 2019 社區並解決了問題。 謝謝,P__J__。
這些問題似乎沒有希望,除非只是把它吸起來並轉移到最新的 VS。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.