草龟交易吧:自增、自减运算符和逻辑运算符(特厉害的MT5/MQL5指标编程教程第十篇:优先级、自增和自...

来源:百度文库 编辑:偶看新闻 时间:2020/02/20 23:13:45

自增、自减运算符和逻辑运算符(特厉害的MT5/MQL5指标编程教程第十篇:优先级、自增和自减运算、逻辑运算)

 

在表达式求值时,按运算符的优先规则高低次序进行结合,如先乘除后加减,“a + b * c”相当于“a + (b * c)”。如果优先级相同,则按规定的“结合方向”处理。

数学课上算术式的结合方向大部分都是由坐至右的,但是EA和指标编程中,有部分运算符是由右向左结合的,比如“a = b;”,是把b的值赋给a,如果初始值是a为1、b为2,那么执行后a和b都等于2。再比如“a+++b;”相当于“a + (++b);”而非“(a++) + b;”。

两个加号(“++”)是自增运算符,“++a”相当于“a = a + 1;”,而“++a”和“a++”的区别看一下下面的示例:

// 声明变量。
int a, b, x, y;
// 赋值。
a = 0;
x = 0;
b = 1;
y = 1;
a = b++;
x = ++y;

最后,a=1、b=2、x=2、y=2。一定要注意,a=1不是因为“(a = b)++;”,首先自增和自减运算符只能用于变量,“a = b”是个表达式,不能用;其次这个表达式的优先级还是先结合自增运算:“a = (b++);”。但是当两个加号再后面的时候,会先把变量的值代入表达式执行,再自己加1。而当自增或自减运算符在变量左边时,就会先自增或自减,后代入表达式。

如果我写“a = a+++++b;”则会被结合成“a = a + (++(++b));”,自增运算符不能用于表达式,所以这么写无法通过编译。初始值“a”为“0”、“b”为“1”,“a = (a++) + ++b;”后,“a”的值为多少呢?自己算一算再往下看。

赋值运算会先算等号右边的部分,“(a++) + ++b”变成“(0++) + ++1”,再变成“(0++) + 2”,这个表达式的值为“2”,而此时“a”该“+1”了,“a = 0 + 1;”之后,又该把“(0++) + 2”的值赋给“a”了,所以最终“a”的值为“2”。可能看上去有点乱,多用用就好了,或者尽量避免在同一表达式中连续使用自增、自减运算符。

“a = a + 1;”还有一种写法:“a += 1;”,它比自增运算符灵活的地方是可以“a += 2;”。“a -= 1;”同理。

上一篇讲的if...else结构,大部分都是以逻辑运算作为判断条件,逻辑运算只有两个结果:“真”、“假”。

a && b
读作:“a与b”,若“a”和“b”都为“真”,则表达式的值为“真”。
a || b
读作:“a或b”,若“a”和“b”其中任意一个为“真”,则表达式的值为“真”。
!a
读作:“非a”,若“a”为“真”,则表达式的值为“假”。

举几个例子:

bool a = true;
bool b = false;
int c = 1;
a && b; // 为假。
a || b; // 为真。
!b; // 为真。
!(c > 0); // 为假。

另外“!a || b $$ c”的结合规则为“(!a) || (b $$ c)”。“非”的优先级 > “与”的优先级 > “或”的优先级。下一篇列出所有运算符和优先级,太长了占篇幅,单开一篇。

转载请注明,转载自:特厉害 ? 自增、自减运算符和逻辑运算符(特厉害的MT5/MQL5指标编程教程第十篇:优先级、自增和自减运算、逻辑运算)
原文链接:http://www.telihai.com/node/11

关于C的自增运算符的又一个疑惑!! 关于C的自增运算符的疑惑 位运算符(&,|,^,~)和逻辑运算符(&&,||,!)谁的优先级别高啊 逻辑运算符&&和||的使用 !?? C语言中~自加自减运算的问题 C中这个语句怎样体现自增运算符的“右结合性” 计算机中的逻辑运算和普通的运算有什么不同?还有逻辑运算一般用在那里? 计算机中用于算术运算和逻辑运算的部件是? 逻辑运算符 自增自减的问题... 数字信号处理中数制有那些?所涉及的运算有算术运算和那些?逻辑运算用哪两种方法可简化运算? 逻辑运算符的含义中,等价运算是“操作都为假时结果为真”吗? .计算机中主要用于算术运算和逻辑运算的部件是 计算机中主要用于算术运算和逻辑运算的部件是 计算机中主要用于算术运算和逻辑运算的部件是 特特的自作曲<回忆> c语言中,逻辑运算和赋值运算哪个优先级高? 关于C语言自增自减的问题 C关于自增自减的两道题 java中x++是自加运算符.程序中++X又是代表什么呢? 算法时间复杂度中,逻辑运算与数学运算的比较 目前微型计算机中CPU进行算术运算和逻辑运算时,可以处理的二进制信息长度是? 14、能进行算术运算和逻辑运算的部件称为运算器,也称算术逻辑单元(( ) )。(1分) 14、能进行算术运算和逻辑运算的部件称为运算器,也称算术逻辑单元(( ) )。(1分)