恭喜,你发布的帖子
发布于 2021-12-12 14:39:15
23楼
楼上正解,是L区内存分配的问题,不光是200、200SMART,300\400\1200\1500也有同样的问题。
分配的L区是针对所有程序的,如果两个子程序里的局部变量定义为相同的名字或者一个子程序多次调用,在该局部变量定义为IN的时候就会出现以上问题,第二个调用程序里的该局部变量会受到第一个调用程序里的该局部变量结果的影响,这是没有理解L区使用机制。
定义成IN就不对,改成IN_OUT就正常了,这是因为局部变量应该是先赋值再运算,IN_OUT是先OUT再IN的,相当于先赋值再调用去运算,每次调用子程序都是先赋值再去运算,自然就不会受到上一个调用子程序结果的影响了。
如果你定义成IN,那么需要在程序里先写一段赋值程序,然后再去后面的逻辑运算,这样就不会有问题了。一般人是不会这么写的,直接就是IN进来就写逻辑程序了。
1847有一集视频专门讲了这个问题,好好看一下,可以帮助加深理解。
抓住重点:先赋值再运算
请填写推广理由:
分享
只看
楼主