Windows 64位平台上各种数据类型的大小 - 特别是sizeof(int)

时间:2013-12-07 08:50:50

标签: c++ c windows

我正在使用Microsoft Visual Studio 2012作为我的IDE环境。显然,我的机器运行的是Windows 7 x64,我正在尝试开发64位程序。

但请注意,编译器是Nvidia的nvcc(我已经验证我下载了64位版本)。

为了详细说明,这是Visual Studio打印出来的编译命令:

 D:..."C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\bin\nvcc.exe" -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\x86_amd64"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include"  -G   --keep-dir x64\Debug -maxrregcount=0  --machine 64 --compile   -g   -DWIN64 -D_DEBUG -D_CONSOLE -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MDd  " -o x64\Debug\kernel.cu.obj "...kernel.cu" -clean 

它似乎正在以64位进行编译。

如果是这种情况,我就注意到了这一点:

When compiled to run on a Windows platform...

(1) sizeof(int) == 4
(2) sizeof(long) == 4 //Where 1 and 2 are true regardless of platform, x86 or x64
(3) sizeof(long long) == 8

这准确吗?如果它是,这是否意味着我必须声明一个很长的长度才能在Windows中使用8字节“喜欢”整数? (这意味着我需要避免双打和漂浮)。

2 个答案:

答案 0 :(得分:3)

标准保证

long long为64位或更长,因此您的猜测是正确的。但是,为清楚起见,最好包含<cstdint>并使用int64_tint_least64_t

答案 1 :(得分:0)

是的,MSVC中的整数是4个字节。有关MSVC大小的详细信息,请参阅this article

对于8个字节的数字,请使用long longdouble