- 類型轉換
- 整型常量
- 字符常量
- 布爾型常量
- 浮點常量(雙精度常量)
- 字符串常量
- 顏色常量
- 時間日期常量
任何程序都要依靠數據來運行,數據因日的不同可以有不同的類型。比如,數組可以存取整型數據,價格可以用浮點型雙精度數表示。在MQL4中沒有專門用來表示貨幣值的數據類型。
不同的數據類型有不同的處理速度,整型數據是最快的。處理雙精度的數據需要使用特殊的協處理器,所以,處理浮點型數據比較復雜,它比處理整型數據要慢一些。字符串處理速度是最慢的,因為它要分配/重分配計算機動態內存。
主要的數據類型如下:
- 整型數據 (int)
- 布爾型數據 (bool)
- 字符型數據 (char)
- 字符串型數據 (string)
- 浮點型數據 (double)
- 顏色數據 (color)
- 日期時間數據 (datetime)
color型和datetime型僅僅是為了讓我們更清楚地區分圖表內容和輸入這些參數時才有意義,這些參數可在和能交易的屬性標簽和自定義指標“輸入”標簽中設置。color和datatime型數據用整數來表示。int和double型統稱為數值型。
在表達式運算中使用了隱式類型轉換(自動轉換)。
類型轉換
在MQL4表達式中使用了隱式類型轉換。由低到高轉換類型的優先級:
int (bool,color,datetime);double;string;
在運算完成之前(除數據己被定義的),數據自動轉換為高優先級類型。當賦值操作完成時,數據會轉換成目標數據類型。
示例:
int i = 1 / 2; // 沒有類型轉換,結果為 0int i = 1 / 2.0; // 表達式中有浮點型數據,但會轉換成整型數據,結果為 0double d = 1.0 / 2.0; // 沒有類型轉換,結果為 0.5double d = 1 / 2.0; // 表達式計算的結果是浮點型數據,和目標類型一樣,結果為 0.5double d = 1 / 2; // 表達式是整型數據的計算,然后被定義為浮點型數據,結果為 0.0string s = 1.0/8; // 表達式轉成雙精度型,再轉成字符串型,結果為"0.12500000"(含10個字符)string s = NULL; // 整型常量轉成字符串型,結果為"0"(含1個字符)string s = "Ticket #"+1234;//表達式轉成字符串型,與目標類型相同,結果為"Ticket #12345"
類型轉換不但運用在常量中,還被運用在相應的變量中。
整型常量
十進制: 數字 0 – 9 ,包括負數。
示例:
12, 111, -956 1007
十六進制: 數字 0 – 9 , 字符 a – f 或者 A – F 代表 10 – 15; 以 0x 或者 0X 開頭。
示例:
0x0A, 0x12, 0X12, 0x2f, 0xA3, 0Xa3, 0X7C7
整型數據占用 4 字節的內存空間,其數值范圍介于 -2147483648 ~ 2147483647 之間。如果超出這個范圍,則視為無效。
字符常量
任何帶單引號的單一字符或者類似 ‘/x10’ 形式的十六進制ASCII 碼都是整型的字符常量。字符常量中包含一些特殊字符,如單引號(‘)、雙引號(“)、問號(?)、反斜線(/)和控制符,必須以反斜線開頭(/)轉義表示,如下表所示:
換行 NL (LF) /n制表符 HT /t回車 CR /r反斜線 / //單引號 ' /'雙引號 " /"十六進制ASCII hh /xhh
如果上述字符不使用反斜線,結果將不被定義:
int a = 'A';int b = '$';int c = '?'; // 代碼0xA9int d = '/xAE'; // 符號 ? 代碼
字符數據占用 4 字節的空間。其數值范圍介于 0 ~ 255 之間。如果超出這個范圍,則視為無效。
布爾型常量
布爾型(Boolean) 常量用來表示 真值(true) 和 假值(false), 還可以用數字 1 和 0 進行表示。True 和 TRUE,False 和 FALSE都可使用(字母不區分大小寫)。
示例:
>bool a = true;bool b = false;bool c = 1;
布爾型常量占用長度為4字節的內存空間,它用0或1的值表示。
浮點常量(雙精度常量)
浮點型數據由整數部分、小數點(.)和小數部分組成,其中整數部分和小數部分都是一組十進制數字。
示例:
double a = 12.111;double b = -956.1007;double c = 0.0001;double d = 16;
浮點型數據 (雙精度)占用 8 字節的內存空間。其數值范圍介于 -1.7e-308 ~ 1.7e308 之間。如果超出這個范圍,則視為無效。
字符串常量
字符串數據是用雙引號括起來的一連串 ASCII 字符,如:”Character constant”。
字符串數據是雙引號里的一組字符,如果需要在字符串中插入一個雙引號(“),在它前而必須使用反斜杠(/)。如果有前置反斜杠(/),任何特殊字符都能用在字符串中。字符串長度介于0到255個字符之問,如果超過這個長度,尾部多余的字符將被忽略,編譯器也會有相應的提示。

示例:
"This is a character string""Copyright symbol /t/xA9""this line contains a line feed symbol /n""C://Program Files//MetaTrader 4""A" "1234567890" "0" "$"
字符串數據占用 8 個字節的空間。其中第一部分為長的整型,存儲字符串緩沖區的長度。第二部分是32位的存儲字符串緩沖區的地址。
顏色常量
顏色數據可以用三種方法表示: 用字符表示、用整數表示或者是顏色名(只能是已經命名的Web顏色)。
用字符表示的方法是用三個數字來表示三種主要顏色:紅、綠、藍的比例。 顏色數據以 C 開頭,并用單引號括住。每種顏色的比例值在 0 ~ 255 之間。
整數表示的方法是使用十六進制或十進制數字。十六進制數字如 0x00BBGGRR, 其中 RR 是紅色的比例,GG 是綠色的比例,BB 是藍色的比例。十進制數不能直接體現紅、藍、綠的比例 ,而是十六進制數字的十進制表示方式。
特殊的顏色名可以參考Web顏色表。
示例:
// 用字符表示C'128,128,128' // 灰色C'0x00,0x00,0xFF' // 藍色// 用顏色名表示RedYellowBlack// 用整數表示0xFFFFFF // 白色16777215 // 白色0x008000 // 綠色32768 // 綠色
顏色數據占用 4 字節的內存空間。第一個字節一般被忽略,后三個字節包含了紅綠藍的組成信息。
時間日期常量
時間日期常量可以當作一個文本行來表示,它由6個部分組成:年、月、日、時、分、秒,以D開頭,并用單引號括起來,其中日期(年、月、日)、時
問(時、分、秒)、甚至兩者都可以同時省略。日期時問型常量變化范圍1970. 1.1一2037. 12.31。
示例:
D'2004.01.01 00:00' // 新年D'1980.07.19 12:30:27'D'19.07.1980 12:30:27'D'19.07.1980 12' //等于 D'1980.07.19 12:00:00'D'01.01.2004' //等于 D'01.01.2004 00:00:00'D'12:30:27' //等于 D'[編譯日期] 12:30:27'D'' //等于 D'[編譯日期] 00:00:00'
日期時間數據占用 4 字節空間長度的整型數值。其值從1970年1月1日00:00開始以秒的形式顯示總秒數。
來源:外匯邦
評論前必須登錄!
立即登錄 注冊