给定一个固定的平台,sizeof可以为同一类型返回不同的大小吗?
我有一个非常大的传统Visual Studio解决方案,并且在我感兴趣的类型的某些源代码中是unsigned long
。我无法更改此代码,我想知道何时用作计数器的该类型的变量会发生滚动。给定一个固定的平台,sizeof可以为同一类型返回不同的大小吗?
我写了一个不同的非常小的Visual Studio项目有一个简单的程序std::cout << sizeof(unsigned long)
我得到4
:我可以假设sizeof(unsigned long)
给4
也是在大的解决方案?或者是否有一些构建/编译器选项可以改变它?
是否有任何特定于Microsoft的编译器选项,可以在每个项目的基础上更改内置类型的大小?
我可以假设sizeof(unsigned long)在大解决方案中也给出了4吗?
具体是(Windows,Visual Studio)。 否,一般情况下。
sizeof(void *) : depends on the target platform.
sizeof(long ) : standard guarantees at least 4 bytes, but it could be larger.
对Microsoft文档的任何引用? –
行情从微软的Data Type Ranges:
的Visual C++ 32位和64位编译器识别类型表本文后面英寸
Type | Bytes unsigned long | 4
微软具体
下表列出存储在Microsoft C++ 基本类型所需的量。
Type | Size float, __int32, int, unsigned int, long, unsigned long | 4 bytes
因此,答案是肯定的(用于Microsoft Visual C++)。
更新:
有没有具体到微软的任何编译器选项,可以改变大小的内置类型上每个项目的基础是什么?
从文档看,它看起来像Microsoft C++编译器保证它是4个字节。因此,我认为没有可以改变这一点的选项(至少对于现有的编译器)。
你写的是正确的,但似乎没有回答我的问题。是否有任何特定于Microsoft的编译器选项可以改变内置类型的大小? –
@AlessandroJacopson它从逻辑上遵循文档,Microsoft C++编译器的大小始终为4。因此,我认为,它不能通过编译器选项进行更改(至少对于当前现有的编译器)。更新了帖子。 – AMA
如果您需要一个固定大小的整数,请查看''。不要假设'unsigned long' –
StoryTeller
@StoryTeller是的,谢谢,我知道''。 –
我怀疑你有这个问题的别有用心的动机。值得在你的帖子中提及它。在这种情况下得到的答案可能会比简单的是/否更好。 – StoryTeller