MQL5语言帮助文件人话版(七)数据类型之字符常量

| 发表于 前天 12:21 | 显示全部楼层 |复制链接
第七章:字符常量数据类型

一、编程新手的感悟:第一次见到系统用数字代替某种非数字东西字符常量作为一种文本专用的整数数字类型,在日常EA开发中几乎用不到,可能在输出日志的时候,会用它来换一下行。字符常量的本质上是一组uchar——无符号单字节整数,从0到255,总共256个数字。每个数字代表着一个文字符号,可以是字母,也可以是标点符号,也有不可见的,比如说换行符、空格之类的。比如65代表A,66代表B,67代表C,诸如此类。这套对应系统就是ASCII码,通常在国内被称为“阿斯卡”或“阿色K”,是美国信息交换标准代码的缩写。这套代码基于拉丁字母,主要用于表示现代英语及其他西欧语言。它是计算机程序识别和输出文字符号内容的内在逻辑,因为计算机只认数,不认字儿,它必须把文字转化成数字才能处理。MQL5 字符常量底层固定为 ushort无符号短整型(2 字节,0‑65535),一个MQL5字符常量相当于两个 ASCII 标准的字符常量组合,所以可以表达256×256=65536个不同的字符。除了ASCII 标准中已经规定的256种拉丁字母符号,还可以囊括世界上其他主要国家语言的文字符号。前文说到的非数字数据类型字符串string,是用来输出文本的,它本质上就是一堆字符常量的组合,每个字符常量代表着一个文字符号,且可以容纳的个数不限,你在string后面的双引号里写一本世界名著都可以。二、字符常量字符常量:在形式上用单引号 ' ' 包裹,里面放单个字符 ,如果你在代表字符常量的单引号里面放两个或以上的字符,系统直接报错。需要注意:(1)双引号 "A" 是字符串(文本),(2)单引号 'A' 才是字符常量,二者完全不是一个东西。字符常量的本质是整数,在ASCII标准中是一个二进制的数字,取值范围从0到255。在编程中,也可以使用十六进制形式进行书写。字符常量既然是整数,就可以加减、比较计算,但本质上是进行序数定位的计算。比如‘A’+1=B,它的意义仅限于A的序号加1个就是B的序号,比较大小也为为了确定谁在谁的前面、后面。如果你让‘A’בB’,虽然也可以算65×66=4290,这个4290也代表一个文字符号,但这个计算没有任何实际意义。三、转义控制符正常情况下编译器会按固定规则解析也就是认出你代码中写的符号:(1)单引号‘ ’:用来包裹字符常量 'A'(2)双引号 ”“ :用来包裹字符串 "abc"假如我就想在字符或者字符串里真正输出一个单引号或者双引号怎么办?直接写会造成语法混乱,编译器会把引号里面的引号当作起始或结束标志,误以为常量提前结束、代码报错。这时就要依靠反斜杠\,它告诉编译器:紧跟在它后面的字符不要按原有语法含义解析,当成普通文字处理。因此 \ 叫做转义控制字符以 \ 开头,搭配一个或多个字符形成一组整体,就叫转义序列单引号 ' '、双引号 " ",甚至反斜杠 \ 自身,以及各类不可见控制字符,都可以写成以反斜杠开头的转义序列。还有一类:不可见「控制字符」换行、制表符、ASCII 控制码肉眼看不见,没法直接敲进代码,同样依靠转义序列表达:(1)'\n' 换行(2)'\t ' 制表空格(3)'\r' 回车(4)'\xhhhh' 代表四位的16进制字符 h指代每一位上的16进制字码(5)'\d' 代表0到65536的十进制代码转义控制符能转的符号只有寥寥几个,千万不要把它当成文本转换器,幻想它可以把所有内容转成文本输出。如果你添加了它不能转的东西在后面,系统就会发神经了,说不准给你什么惊喜,这叫”未定义行为“。
最近访问 头像模式
举报

评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

麻爪

麻爪 D

如果你想让一个人下地狱,介绍他做交易。
如果你想让一个人在地狱里永不超生,介绍他做EA交易。

Fast跟单EA