三目运算中表达式的结果令一个位置位或复位时报错,而对一个int字赋值没有问题,请问是怎么回事啊?编译器是内嵌到信捷PLC编程软件里面的,DW为int类型寄存器,M为位存储器
参考博主“书山客”的回答,以下为正解:
ss=(DW[4010]-DW[4006])<=3000;
M[20]=ss?1:0;
三目运算里表达式的结果是1个值,而不是对一个位置位或复位,你要是这么做的话编译器可能会识别不出来,int赋值没有问题,因为赋值操作只是给该变量赋一个值,并不涉及对该变量的位操作。
可能是三目运算符 ? :
的操作数类型或返回值类型与位存储器 M
的类型不匹配导致错误。检查一下三目运算符操作数类型和返回值类型是否与位存储器的类型相同。