我运行以下SAS 程序,得到了result=0
,这让我很惊讶!
data calculation;
result = (3 gt 2 = 1); /* 0 */
run;
proc print;
run;
我对此完全感到困惑,有人可以帮助我吗?
我查阅了关系运算符的顺序,文档告诉我它是从左到右执行的。但3 gt 2 = 1
在我看来是True
......
我运行以下SAS 程序,得到了result=0
,这让我很惊讶!
data calculation;
result = (3 gt 2 = 1); /* 0 */
run;
proc print;
run;
我对此完全感到困惑,有人可以帮助我吗?
我查阅了关系运算符的顺序,文档告诉我它是从左到右执行的。但3 gt 2 = 1
在我看来是True
......
SAS 有一些特殊的语法,在指南或参考资料中并不总是很容易找到。请参阅 复合表达式中的求值顺序
通常在测试某个值是否在某个范围内时出现。例如:
你的表情:
被评估为
( (3 > 2) AND (2=1) ) resolves to 0
在其他情况下,你的直觉也可能会碰到这个障碍:“SAS 不保证短路评估。”在链接的叙述中有“示例{表明} SAS 在某些时候可能会使用短路评估,而在其他时候则不会”