Common data types: How much bytes are they?

Hal*_*Hal 5 memory delphi

I'd like to know how much bytes a

  • 32-bit integer

  • ASCII character (char in C++?)

  • Pointer (4 bytes?)

  • Short

  • Float

Takes up in Delphi, and if it is generally the same in most languages

另外,上面提到的数据类型是否具有恒定的大小?我的意思是整数0,4,123和32231都是相同的大小?

And*_*and 8

32位整数总是四个字节,因为1个字节= 8位.

  • An Integer是带符号的32位整数,a Cardinal是无符号的32位整数.因此,无论它们代表什么值,它们总是占用四个字节.(事实上​​,简单类型确实具有固定宽度是一个非常重要的事实 - 低级编程实际上取决于此!它甚至是计算机工作原理的基石部分.)

  • 较小的整数类型是Smallint(16位有符号),Word(16位无符号)和Byte(8位无符号).较大的整数类型是Int64(64位有符号)和UInt64(64位无符号).

  • CharAnsiChar在Delphi 2009之前是一个1字节; 现在它是一个2字节WideChar.

  • Pointer总是4个字节,因为Delphi目前只创建32位应用程序.当它支持64位应用程序时,Pointer将变为8个字节.

  • Delphi中有三种常见的浮点类型.这些是Single,Double(= Real)和Extended.它们分别占用4,8和10个字节.

要研究给定类型的大小,例如Short,只需尝试

ShowMessage(IntToStr(SizeOf(Short)))
Run Code Online (Sandbox Code Playgroud)

参考:


vas*_*sin 1

对于不同的机器可能会有所不同,因此您可以使用以下代码来确定整数的大小(例如):
cout << "Integer size:" << sizeof(int);