为什么在Turbo C编译器中sizeof(int)
是2个字节,在gcc Linux编译器中是4个字节?
sizeof(int)
并非在所有平台上都是常量。
它因系统而异。
PS: sizeof(char)
sizeof(int)
因机器而异(有时因编译器而异)
通常sizeof(int)
表示CPU的"自然"字宽。但是,如果您的编译器在x64机器上作为x86程序运行,那么这种假设就会失效。
MSDOS指令代码为16 bit | 2 Bytes
。
因此,最大整数值将是16bit
整数。
目前我分析的内容:
关键字
int
在不同的编译器中是不同的。Turbo C是16 bit
编译器,因此它将代码编译为处理器的16 bit
机器码!我们都知道,编译器将代码转换成机器代码才能工作。
GCC同样适用。
我们今天使用的计算机要么是32/64
位。
编译器应该支持使任何应用程序工作的体系结构。
-
GCC为
32/64 bit
编译器。所以,sizeof(int)
就是4 Bytes
。 -
Turbo C是
16bit
编译器。所以,sizeof(int)
就是2 Bytes
。