Pra*_*lai 1 c size-t mingw-w64
我在Windows 10(64位安装)上使用mingw-w64编译器(gcc 8.1.0)。我的期望是获得size_t等于(2 ^ 64-1)的最大值。但是我的程序总是返回SIZE_MAXas 的值(仅2 ^ 32-1)。可能是什么原因?如何在我的C程序中实现最大值(2 ^ 64-1)?
我正在学习C语言,并想查看书中的陈述,即在现代计算机上最大size_t可以为(2 ^ 64-1)。我尝试检查的这段代码如下:
#include <stdio.h>
#include <stdint.h>
int main(){
printf("%d\n", sizeof(size_t));
printf("%zu\n", SIZE_MAX);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
4
4294967295
Run Code Online (Sandbox Code Playgroud)
我-std=c11在编译过程中仅使用一个标志并gcc --version返回:
gcc.exe (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 8.1.0
Run Code Online (Sandbox Code Playgroud)
检查gcc --version时说明您得到了
gcc.exe (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 8.1.0
Run Code Online (Sandbox Code Playgroud)
输出的重要部分是:i686-posix-dwarf-rev0,更具体地说是该i686部分。
这告诉我们GCC是作为32位应用程序构建的(i686是32位系统),并且默认情况下将创建32位可执行文件。
要构建64位可执行文件,您需要添加-m64标志。