跳至内容

Char, Short, Int and Long Types

Char, Short, Int 和 Long 类型

char

char 类型占用 1 字节的内存(8 位),并且可以在二进制表示中表达 2^8=256 个值。char 类型可以包含正数和负数。值的范围是从 -128 到 127。

uchar

uchar 整数类型也占用 1 字节的内存,与 char 类型相同,但不同之处在于 uchar 仅用于正数。最小值为零,最大值为 255。uchar 类型名称中的首字母 u 是“无符号”的缩写。

short

short 类型的大小为 2 字节(16 位),因此它可以表达 2 的 16 次方:2^16 = 65,536 的值范围。由于 short 类型是带符号的,可以包含正数和负数,因此值的范围在 -32,768 到 32,767 之间。

ushort

无符号 short 类型就是 ushort,它也有 2 字节的大小。最小值为 0,最大值为 65,535。

int

int 类型的大小为 4 字节(32 位)。最小值为 -2,147,483,648,最大值为 2,147,483,647。

uint

无符号整数类型是 uint。它占用 4 字节的内存,可以表达从 0 到 4,294,967,295 的整数。

long

long 类型的大小为 8 字节(64 位)。最小值为 -9,223,372,036,854,775,808,最大值为 9,223,372,036,854,775,807。

ulong

ulong 类型也占用 8 字节,可以存储从 0 到 18,446,744,073,709,551,615 的值。

示例:

char  ch=12;
short sh=-5000;
int   in=2445777;

由于无符号整数类型不是用于存储负数设计的,尝试设置负数可能会导致意外后果。这样的简单脚本会导致无限循环:

//--- Infinite loop
void OnStart()
  {
   uchar  u_ch;

   for(char ch=-128;ch<128;ch++)
     {
      u_ch=ch;
      Print("ch = ",ch," u_ch = ",u_ch);
     }
  }

正确的变体是:

//--- Correct variant
void OnStart()
  {
   uchar  u_ch;

   for(char ch=-128;ch<=127;ch++)
     {
      u_ch=ch;
      Print("ch = ",ch," u_ch = ",u_ch);
      if(ch==127) break;
     }
  }

结果:

ch= -128  u_ch= 128
   ch= -127  u_ch= 129
   ch= -126  u_ch= 130
   ch= -125  u_ch= 131
   ch= -124  u_ch= 132
   ch= -123  u_ch= 133
   ch= -122  u_ch= 134
   ch= -121  u_ch= 135
   ch= -120  u_ch= 136
   ch= -119  u_ch= 137
   ch= -118  u_ch= 138
   ch= -117  u_ch= 139
   ch= -116  u_ch= 140
   ch= -115  u_ch= 141
   ch= -114  u_ch= 142
   ch= -113  u_ch= 143
   ch= -112  u_ch= 144
   ch= -111  u_ch= 145
    ...

示例:

//--- Negative values can not be stored in unsigned types
uchar  u_ch=-120;
ushort u_sh=-5000;
uint   u_in=-401280;

十六进制:数字 0-9,字母 a-f 或 A-F 表示 10-15 的值;以 0x 或 0X 开头。

示例:

0x0A, 0x12, 0X12, 0x2f, 0xA3, 0Xa3, 0X7C7

另请参阅

类型转换

最后更新于