使用 MinGW/long double

问题描述

问题:

我的代码使用 Cygwin 运行良好(long double 打印时就像有 16 个字节的内存,最小值和最大值都可以),但是使用 MinGW,CodeBlocks 说 long double 有 12 个字节的内存(如果我修改代码显示 int 中的大小而不是 long double,long double 中是 -2,000000),并且它的最小值和最大值都打印为 -0,000000。

代码块版本:20.03.
MinGW-W64 项目(版本 8.1.0,32/64 位,SEH)。

我尝试过提示,但结果是一样的!

我在帖子中看到这个问题是由 Windows 产生的,但如果它适用于 Cygwin,那么有一个解决方案,也许某个地方的人知道...

观察:

我可以使用 Cygwin,但是葡萄牙语有很多带重音的词,我用它们来命名我的目录,所以当我使用 Cygwin 时,事情很复杂,我不知道如何包含一些像 conio.lib 这样的库。 h 正确,并且 MinGW 包含了 conio.h 之类的库,所以我更喜欢学习如何解决这个问题。

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

int main()
{
// Declaration of variables
long double min,max,size;

// Size
size = sizeof(long double);

// Min and Max
min = pow(2,(sizeof(long double)*8))*(-1);
max = pow(2,(sizeof(long double)*8));

// Print of results
printf("Size of long double: %Lf\n",size);
printf("Min of long double: %Lf\n",min);
printf("Max of long double: %Lf\n",max);

// end of main
return(0);
}

在 mingw 中:

在 cygwin 中:

解决方法

下载分离的“MinGW-W64 Online Installer”(代码块中包含的mingw是32bits,因为这是12bit的打印)

安装 7.3.0 版本。 (8.1.0 版本有问题,因为它打印了 0.000000 或 -0.000000)。