sizeof(int)
在Dev Cpp
上显示4,即使它在64位计算机上运行。为什么不考虑底层硬件并显示8呢?另外,如果我编译环境也改为64位(首先是64 bit compiler
是否有意义?!),那么int的大小会改变吗?
是否有任何标准可以决定这一点?
答案 0 :(得分:16)
取自http://en.wikipedia.org/wiki/64-bit(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主要模型的编程模型通常占主导地位。
答案 1 :(得分:0)
虽然编译器最终决定一个整数的大小,但它通常作为CPU寄存器的大小继承,它将保存整数。许多处理器支持32位/ 64位寄存器算法,编译器设置决定调用哪种模式。 只要sizeof(long)等,唯一的保证是sizeof(long)> = sizeof(short)。