Kiểu ký tự
Kiểu dữ liệu ký tự dùng để lưu trữ các ký tự cụ thể (chữ cái), từ đó hình thành nên chuỗi (xem Chuỗi). MQL5 có 4 kiểu ký tự: Hai kiểu có kích thước 1 byte (char
, uchar
) và hai kiểu có kích thước 2 byte (short
, ushort
). Các kiểu có tiền tố 'u' là không dấu.
Trên thực tế, các kiểu ký tự là kiểu số nguyên, vì chúng lưu trữ mã số nguyên của một ký tự từ bảng có liên quan: Đối với char
, đó là bảng các ký tự ASCII (mã 0-127); đối với uchar
, đó là ASCII
mở rộng (mã 0-255); và đối với short
/ushort
, đó là bảng Unicode (tối đa 65535 ký tự trong phiên bản không dấu). Nếu bạn quan tâm, ASCII là viết tắt của American Standard Code for Information Interchange.
Đối với chuỗi MQL5, các ký tự ushort
2 byte được sử dụng. Các kiểu uchar
1 byte thường được dùng để tích hợp với các chương trình bên ngoài khi truyền các mảng dữ liệu ngẫu nhiên được đóng gói và giải nén theo các kiểu khác nhau theo các giao thức được áp dụng, chẳng hạn như để kết nối với nền tảng mã hóa.
Hằng số ký tự được ghi lại dưới dạng các chữ cái được đặt trong dấu ngoặc đơn. Tuy nhiên, bạn cũng có thể sử dụng ký hiệu số nguyên (xem Số nguyên) được xem xét ở trên. Đồng thời, số nguyên phải nằm trong phạm vi giá trị cho định dạng 1 hoặc 2 byte.
Ngoài ra, chúng ta có thể sử dụng ký hiệu của chuỗi thoát. Chúng sử dụng dấu gạch chéo ngược (\
) làm ký tự đầu tiên theo sau là một trong các ký tự điều khiển được xác định trước và/hoặc mã số. MQL5 hỗ trợ các chuỗi thoát sau:
\n — new line
\r — carriage return
\t — tabulation
\\ — backslash
\" — double quote
\' — single quote
\X or \x — tiền tố để sau đó chỉ định mã số ở định dạng thập lục phân
\0 — tiền tố để sau đó chỉ định mã số ở định dạng bát phân
2
3
4
5
6
7
8
Các phương pháp cơ bản để sử dụng hằng số kiểu ký tự được đưa ra trong tập lệnh MQL5/Scripts/MQL5Book/p2/TypeChar.mq5
.
void OnStart()
{
char a1 = 'a'; // ok, a1 = 97, Mã chữ cái tiếng Anh 'a'
char a2 = 97; // ok, a2 = 'a' as well
char b = '£'; // cảnh báo: cắt bớt giá trị hằng số, b = -93
uchar c = '£'; // ok, c = 163, mã biểu tượng pound
short d = '£'; // ok
short z = '\0'; // ok, 0
short t = '\t'; // ok, 9
short s1 = '\x5c'; // ok, mã dấu gạch chéo ngược 92
short s2 = '\\'; // ok, backslash as is, code 92 as well
short s3 = '\0134';// ok, mã dấu gạch chéo ngược ở dạng bát phân
}
2
3
4
5
6
7
8
9
10
11
12
13
Biến a1 và a2 lấy giá trị của ký tự 'a' (chữ cái tiếng Anh) theo hai cách khác nhau.
Có một nỗ lực ghi '£' trong biến b, nhưng mã 163 của nó nằm ngoài phạm vi char
(127); do đó, nó được "biến đổi" thành số có dấu -93
(trình biên dịch đưa ra cảnh báo). Các biến có kiểu uchar
(c) và short
(d) theo sau nó nhận thấy mã này là bình thường.
Các biến khác được khởi tạo bằng chuỗi thoát.
Ký tự có thể được xử lý bằng các thao tác tương tự như số nguyên (xem Biểu thức).