查看: 505|回复: 9
收起左侧

[应用问题] 问个大神一个循环比较问题

邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x
FOR I:=0 TO 10 BY 1 DO
                IF C[I] >0 THEN
                        B:=TRUE;
                        ELSE
                                B:=FALSE;
                        END_IF
END_FOR

这样为什么B一直是FALSE呢?




上一篇:物联网盒子多加一个LAN口
下一篇:CODESYS V3.5 SP18 重磅发布

已有 0 人打赏作者

回复 邀请回答送花

使用道具 举报

kkss 2022-4-26 20:57:28 | 显示全部楼层
要统计大于0个数就用临时变量,大于就+1  如果是只要有个大于0 就输出可以先置位标志位然后EXIT退出循环
回复 送花

使用道具 举报

Childishness 2022-4-26 22:48:27 | 显示全部楼层
可以改成这样B := FALSE;
FOR I:=0 TO 10 BY 1 DO
        IF C[I] >0 THEN
                B := TRUE;
                EXIT;  // 检测到TRUE,则退出本次FOR循环
        END_IF
END_FOR


回复 送花

使用道具 举报

wangh 2022-4-27 01:09:29 | 显示全部楼层
wangh 发表于 2022-4-26 18:01
这个写法,B的状态只取决于C[10]

如果楼主的目的是判断数组里是否有大于0的数,可以这样:
B:=FALSE;
FOR I:=0 TO 10 BY 1 DO
       IF C[I] >0 THEN
              B:=TRUE;
       END_IF
END_FOR
回复 送花

使用道具 举报

工控彭于晏 2022-4-27 10:33:04 | 显示全部楼层
wangh 发表于 2022-4-26 18:01
这个写法,B的状态只取决于C[10]

确实是这样
回复 送花

使用道具 举报

工控彭于晏 2022-4-27 10:34:39 | 显示全部楼层
wangh 发表于 2022-4-27 01:09
如果楼主的目的是判断数组里是否有大于0的数,可以这样:
B:=FALSE;
FOR I:=0 TO 10 BY 1 DO

谢谢 学到了
回复 送花

使用道具 举报

工控彭于晏 2022-4-27 10:35:20 | 显示全部楼层
Childishness 发表于 2022-4-26 22:48
可以改成这样B := FALSE;
FOR I:=0 TO 10 BY 1 DO
        IF C >0 THEN

谢谢 学到了
回复 送花

使用道具 举报

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

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部