Char, Short, Int And Long Types - Language Basics - MQL4 Reference

Char, Short, Int and Long Types

char

The char type takes 1 byte of memory (8 bits) and allows expressing in the binary notation 2^8=256 values. The char type can contain both positive and negative values. The range of values is from -128 to 127.

uchar

The uchar integer type also occupies 1 byte of memory, as well as the char type, but unlike it uchar is intended only for positive values. The minimum value is zero, the maximum value is 255. The first letter u in the name of the uchar type is the abbreviation for unsigned.

short

The size of the short type is 2 bytes (16 bits) and, accordingly, it allows expressing the range of values equal to 2 to the power 16: 2^16 = 65 536.Since the short type is a signed one, and contains both positive and negative values, the range of values is between -32 768 and 32 767.

ushort

The unsigned short type is the type ushort, which also has a size of 2 bytes. The minimum value is 0, the maximum value is 65 535.

int

The size of the int type is 4 bytes (32 bits). The minimal value is -2 147 483 648, the maximal one is 2 147 483 647.

uint

The unsigned integer type is uint. It takes 4 bytes of memory and allows expressing integers from 0 to 4 294 967 295.

long

The size of the long type is 8 bytes (64 bits). The minimum value is -9 223 372 036 854 775 808, the maximum value is 9 223 372 036 854 775 807.

ulong

The ulong type also occupies 8 bytes and can store values from 0 to 18 446 744 073 709 551 615.

Examples:

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

Since the unsigned integer types are not designed for storing negative values, the attempt to set a negative value can lead to unexpected consequences. Such a simple script will lead to an infinite loop:

//--- Infinite loop voidOnStart() { uchar u_ch; for(char ch=-128;ch<128;ch++) { u_ch=ch; Print("ch = ",ch," u_ch = ",u_ch); } }

The correct variant is:

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

Result:

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 ...

Examples:

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

Hexadecimal: numbers 0-9, the letters a-f or A-F for the values of 10-15; start with 0x or 0X.

Examples:

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

See also

Typecasting

Tag » How Many Bytes Is A Char