什么决定整数的大小?
sizeof(int)
在我的Dev Cpp
上显示4,即使它在64位机器上运行。 为什么不考虑底层硬件并显示8呢? 另外,如果我编译环境也改为64位( 64 bit compiler
首先有意义吗?!),那么int的大小会改变吗?
是否有任何标准来决定这一点?
取自http://en.wikipedia.org/wiki/64-bit(64 64-bit data models
)
有各种型号,微软决定sizeof(int) == 4
,有些(几个)其他没有。
Solaris到SPARC64和Unicos的HAL Computer Systems端口似乎是sizeof(int) == 8
的唯一端口。 它们被称为ILP64和SILP64型号。
真正的“战争”是针对sizeof(long)
,微软决定使用sizeof(long) == 4
(LLP64),而几乎所有人都决定使用sizeof(long) == 8
(LP64)。
请注意,实际上编译器“决定”使用哪个模型,但是在wiki中编写
请注意,编程模型是基于每个编译器的选择,并且几个可以在同一OS上共存。 但是,选择作为OS API主要模型的编程模型通常占主导地位。
虽然编译器最终决定整数的大小,但它通常作为CPU寄存器的大小inheritance,它将保存整数。 许多处理器支持32位/ 64位寄存器算法,编译器设置决定调用哪种模式。 就sizeof(long)等而言,唯一的保证是sizeof(long)> = sizeof(short)。