什么决定整数的大小?

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)。