设为首页收藏本站

 找回密码
 注册
查看: 1280|回复: 5
打印 上一主题 下一主题

为什么一样的一条语句执行结果会不一样? [复制链接]

Rank: 1

精华
0
UID
269145
积分
14
帖子
6
主题
2
阅读权限
10
注册时间
2018-8-27
最后登录
2021-4-22
跳转到指定楼层
1#
发表于 2018-11-3 22:21:59 |只看该作者 |倒序浏览
图1比图2多个ok  
其实两个图中的语句是一样的  只不过是and 两边的表达式对调了一下
if (c>o  &&( countIf(close>open,3))>=2){
if (countIf(close>open,3)>=2 and c>o){

//////////////////////////////////////////////////////////完整如下
Vars
  
Begin

if (c>o  &&( countIf(close>open,3))>=2){
//if (countIf(close>open,3)>=2 and c>o){      //两个if 其实一样 但 结果不一样

PlotString("ok","ok");

}

End
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 2

精华
0
UID
256304
积分
66
帖子
47
主题
17
阅读权限
30
注册时间
2017-9-2
最后登录
2021-11-19
2#
发表于 2018-11-3 23:55:12 |只看该作者
试了一下,挺奇怪的
不过,编译的时候,有一个警告,if里面有序列函数,可能存在潜在的错误
我把countif拿出来,就好了

使用道具 举报

Rank: 1

精华
0
UID
269145
积分
14
帖子
6
主题
2
阅读权限
10
注册时间
2018-8-27
最后登录
2021-4-22
3#
发表于 2018-11-4 20:02:23 |只看该作者
zr1624357 发表于 2018-11-3 23:55
试了一下,挺奇怪的
不过,编译的时候,有一个警告,if里面有序列函数,可能存在潜在的错误
我把countif拿 ...


什么警告?我的有以下警告  但不影响运行
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
4#
发表于 2018-11-5 08:38:22 |只看该作者
zr1624357 发表于 2018-11-3 23:55
试了一下,挺奇怪的
不过,编译的时候,有一个警告,if里面有序列函数,可能存在潜在的错误
我把countif拿 ...

countif是序列函数,其运算若是放入条件内,是可能会因为前面条件的限制而导致取值受限,从而计算结果异常的。
所以,在不能确保你前面的条件是否会对其有限制时,可先声明一个中间变量,将序列变量的计算结果赋值给中间变量,再将中间变量放入条件中使用即可避免问题。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
5#
发表于 2018-11-5 08:41:37 |只看该作者
lb3690 发表于 2018-11-4 20:02
什么警告?我的有以下警告  但不影响运行

语法是通过了。
但是需要用户自己确保该运算的结果符合你的需求。。
如果不能确保,那还是建议也同样使用中间变量的方式来避免问题吧。

使用道具 举报

Rank: 1

精华
0
UID
269145
积分
14
帖子
6
主题
2
阅读权限
10
注册时间
2018-8-27
最后登录
2021-4-22
6#
发表于 2018-11-5 22:07:41 |只看该作者
小米 发表于 2018-11-5 08:41
语法是通过了。
但是需要用户自己确保该运算的结果符合你的需求。。
如果不能确保,那还是建议也同样使用 ...

a=close>AverageFC(.........);
b=close>countif(...........);
c=close<=Cum(..);
//写法1:
abc= a and b and c
if (abc){}
//写法2:
if ( a and b and c  ) {}
//写法3:
abc=close>AverageFC(.........)  and  close>countif(...........)  and close<=Cum(..);
if (abc) {}

写法2 写法3 是否合适?

除了  "不要在条件语句,条件语句的判断表达式,循环语句中使用序列函数"  之外 还有哪些跟普通计算机语言不一样的地方.

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-4-20 09:45

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部