1 运算符和表达式

某些数字和字符的组合是特别重要的,它们被称为运算符,例如:
算术运算符:+ – * / %
逻辑运算符:&& ||
赋值运算符:= += *=

运算符常用在表达式中,只有结合操作数时才有意义。
需要特别注意标点符号,如圆括号、方括号、逗号、冒号、分号。
运算符、标点符号、空格用来分割语句的不同部分。

表达式
一个表达式由一个或多个操作数和运算符组成,
一个表达式可写在一行内,也可以分成若干行来书写

示例:
a++; b= 10;
x= (y*z)
/w;

注:一个表达式的最后必须由一个分号(;) 来表示结束。

算术运算符
求和 i= j + 2;
求差 i= j - 3;
改为相反数 x= - x;
乘法 z= 3 * x;
除法 i= j / 5;
求余 minutes= time % 60;
自加1 i++;
自减1 k--;

自增自减运算符不能被嵌套在表达式中
int a= 3;
a++; // 正确的表达式写法
int b= (a++)*3; // 无效的表达式写法

赋值运算符
将右侧的表达式赋值给左侧的变量
y= x; // 将x的值赋值给y

下列表达式中赋值运算符结合了算术运算符或位运算符:
y += x; // 在 y 值上加上 x
y -= x; // 在 y 值上减去 x
y *= x; // 在 y 值上乘以 x
y /= x; // 在 y 值上除以 x
y %= x; // 在 y 值上求 x 的模
y >>= x; // 把 y 值向右做 x 位逻辑移位
y <<= x; // 把 y 值向左做 x 位逻辑移位
y &= x; // AND 位运算符
y |= x; // OR 位运算符
y ^= x; // 把 x 和 y 按做逻辑异或的操作

注:
一个表达式只能有一个赋值运算符.
位运算符只能用于整型数据。
逻辑移位运算符中 x 值只能是小于 5 位的二进制数,过大的数值将会被拒绝。所以移动范围只能是 0 到 31 。
用 %= 运算符求模 ( 求y/x的模),其结果赋予y。

关系运算符
表示两个运算式之间的大小关系。 其返回值为False(0)或True(1)
整数0代表逻辑假值FALSE,任何非零的值代表逻辑真值(true)。
a==b; // a等于b
a!=b; // a不等于b
a<b; // a小于b
a>b; // a大于b
a<=b; // a小于等于b
a>=b; // a大于等于b
两个浮点型数据不能用 == 或 != 运算符比较,但是我们可以把二者相减,并将所得结果和null进行比较。

布尔运算符
否定运算符 非(!), 用来表示真假的反面的结果。
if(!a) // 如果a不是真的
Print("不是 'a'");

逻辑运算符 或(||), 用来表示两个表达式中只要有一个成立即为真。
示例:
if(x || y)
Print("超出范围");

逻辑运算符 和(&&), 用来表示两个表达式要同时成立才为真。
示例:
if(p!=x && p>y)
Print("真");
n++;

位逻辑运算符
~ // 取反运算符(~) 对变量值二进制代码按位取反(求补)。表达式值中所有1变为0,而0变为1。
b= ~n;

.>> // 将二进制代码表示的X逻辑右移Y位。右移是逻辑运算,即左侧用零填满。
x= x >> y;

<< // 将二进制代码表示的X逻辑左移Y位,右侧(低位)用零填满
x= x << y;

二进制中表示的x和Y位运算与(&)。如果x和y两个相应的二进制位都为1,则该位的结果为1,否则为0。
b = ((x & y) != 0);

二进制中表示的x和Y位运算或(|)。如果x和y两个相应的二进制位都为0,则该位的结果为0,否则为1。
b = x | y

二进制中表示的x和Y位运算异或(~)。如果x和y两个相应的二进制位相异,则该位的结果为1,否则为0。
b = x ^ y;

注:位逻辑运算符只适合用于整型数据类型。

其它运算符
下标
数组的第i个元素的序号,i可以为整数或整型表达式。

示例
array[i]= 3; // 将3赋值到array数组第i个元素的位置上

成为数组的下标必须是整数。只允许使用四维或四维以内的数组。每维索引是从0到(数组总长度-1)。例如,一个有50个元素组成的一维数组,引用第一个数组元素用array[0],这样,最后一个数组元素将足array[49]。
如果访问数组超出了数组下标范围,系统将会出错 ERR_ARRAY_INDEX_OUT_OF_RANGE (下标超过范围),

调用xl,x2,…,xn形式参数的函数
每个形参可以是一个常量、一个变量和相应类型的表达式。传递的参数用逗号隔开,并放在圆括号()内,函数名放在圆括号()前。
用此函数返回表达式值。如果函数返回值定义为void型,这些函数调用就不能放在赋值号右边。请确认表达式xl,x2,…,xn是按序执行的。

示例:
double SL= Ask-25Point;
double TP= Ask+25
Point;
int ticket= OrderSend(Symbol(), OP_BUY, 1, Ask, 3, SL, TP, "My comment", 123, 0, Red);

逗号运算符
用逗号分隔的表达式是按从左到右的顺序执行。所有表达式都是先算左边的,再算右边的,其结果的类型和值由右边表达式决定。函数的参数表也可视为一个范例(参见上面)。

示例:
int i;
int j;
for(i=0,j=99; i<100; i++,j--){
}
Print(" i= "+i, " j= "+j);
// 结果显示为 i= 100 j= -1

优先级别规则
下面是从上到下的运算优先规则,优先级高的将先被运算。
下表中同组运算符优先级相同。排在前面的运算符优先级高,排在后而的运算符优先级低。运算符按优先级顺序从高到低排列如下:

() 函数调用 从左到右
[] 引用数组元素
! 真假运算符 从右到左
.- 改变符号
++ 自增
-- 自减
~ "按位取反"运算符
& "按位与"位运算符 从左到右
| "按位或"位运算符
^ "按位异或"位运算符
<< 逻辑左移
.>> 逻辑右移
.* 乘法 从左到右
/ 除法
% 求模
.+ 加法 从左到右
.- 减法
< 小于 从左到右
<= 小于等于
.> 大于

.>= 大于等于
== 等于
!= 不等于
|| 逻辑 或 从左到右
&& 逻辑 与 从左到右
= 赋值 从右到左
+= 加法复合赋值运算符
-= 减法复合赋值运算符
*= 乘法复合赋值运算符
/= 除法复合赋值运算符
%= 求模复合赋值运算符
.>>= 右移复合赋值运算符
<<= 左移复合赋值运算符
&= 按位与复合赋值运算符
|= 按位或复合赋值运算符
^= 按位异或复合赋值运算符

高优先级的圆括号可以改变运算符的执行顺序。
注意:在MQL4程序中,运算符的优先级不同于C 语言。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352

推荐阅读更多精彩内容

  • 菜热了好几遍了,估计不太好吃了吧?要不再去做一碗?尹新月晃晃脑袋,还是算了,这可是自己做的最好的一次了。 张启山今...
    卿浅墨阅读 1,484评论 0 13
  • 「原创」 网络上的微信朋友圈里经常传播着,不是今天,要不就是明天是朋友日了,紧接着就是对朋友之情的一番赞...
    荀皓阅读 956评论 0 0