顺水外汇EA交易网MT4

标题: 请教一个新旧版mt4指标问题,熙版高抬贵手不要挪走 [打印本页]

作者: yangsluo    时间: 2018-1-11 16:39
标题: 请教一个新旧版mt4指标问题,熙版高抬贵手不要挪走
老版mt4(600之前版本)指标代码中出现&&和||是按照什么顺序编译呢?
比如:  条件A  &&  条件B  ||  条件C  &&  条件D   
按C语言说&&的优先级高于||。所以上面应该是 (条件A  &&  条件B ) ||  (条件C  &&  条件D)吗?还是按照从左到右的顺序?
因为最近遇到一个指标里面就出现类似问题了。在老版编译器里 条件A  &&  条件B  ||  条件C  &&  条件D 能正常通过
但是放到新版(600以上版本)就会警告,不是报错是警告

作者: Victor6658    时间: 2018-1-11 17:40
不懂,请问怎样看MT4的版本呀?
作者: 冷眼观局_笑而不    时间: 2018-1-11 19:00
应该是同一级的吧  , 实在不行  , 加括号,问题就都解决了  ,括号优先级别是不容质疑的。
作者: yangsluo    时间: 2018-1-11 20:20

同一级应该是从左向右?不过代码好像说不通

作者: zhou138    时间: 2018-1-11 20:51
括号优先级别是不容质疑的
作者: KSXJM    时间: 2018-1-11 21:56
&&优先级雨||一样的,应该写成"(条件A  &&  条件B ) ||  (条件C  &&  条件D)"才可以
[attach]22177[/attach]

作者: jiuhongzhi    时间: 2018-1-11 22:50

问题是代码 (A && B) || C && D || E && F && G这种情况应该怎么处理?

作者: yangsluo    时间: 2018-1-11 22:57
(A && B) || C && D || E && F && G
可以这样:(A && B) || (C && D) || ((E && F) && G)


作者: jiuhongzhi    时间: 2018-1-11 23:49

(A && B) || C && D || E && F && G
可以这样:(A && B) || (C && D) || ((E && F) && G)
刮号优先级最高

优先规则:下面是从上到下的运算优先规则,优先级高的将先被运算。注意:MQL5语言运算优先依据C++优先规则,不同于MQL4语言。运算描述执行顺序()[].函数调用数组元素参考引用结构元素从左到右!~–++--(type)sizeof真假运算符位逻辑运算符(补码)改变运算符增量减量类型转换决定字节大小从右到左*/%乘法除法百分比从左到右+–加法减法从左到右>左移右移从左到右>=小于小于等于大于大于等于从左到右==!=等于不等于从左到右&位逻辑运算符AND从左到右^位逻辑运算符 OR从左到右|位逻辑运算符 OR从左到右&&逻辑AND从左到右||逻辑OR从左到右?:假设运算从右到左=*=/=%=+=-=>=&=^=|=值乘法值除法值百分比值加法值减法值左移值右移值位逻辑运算符AND值位逻辑运算符OR值位逻辑运算符OR值从右到左,逗号从左到右
若要改变运算操作顺序,使用更高一级的圆括号。

作者: jiuhongzhi    时间: 2018-1-12 00:59
好牛叉啊
作者: superover    时间: 2018-1-12 01:26

看看也是一种学习
作者: wds1234567    时间: 2018-1-12 01:41
学习学习
作者: LZX    时间: 2018-1-12 03:16
伸手习惯了,慢慢我的习气就变坏了




欢迎光临 顺水外汇EA交易网MT4 (http://www.waterforex.com/) Powered by Discuz! X3.2