nlt*_*lta 6 awk logical-operators
运行 gnu awk 时出现 div/0 错误。Mawk 没有同样的错误。
\n>>> awk \'BEGIN { print (0 && (4/0)) }\'\nawk: cmd. line:1: error: division by zero attempted\n>>> mawk \'\'BEGIN { print (0 && (4/0)) }\'\n0\nRun Code Online (Sandbox Code Playgroud)\n如果我在 4 周围添加括号,它的行为是相同的
\n>>> awk "BEGIN { print (0 && ((4)/0)) }"\n0\n>>> mawk "BEGIN { print (0 && ((4)/0)) }"\n0\nRun Code Online (Sandbox Code Playgroud)\n这似乎并不重要。
\n浏览posix 标准,我实际上找不到“短路”这个词,那么两者都正确吗?只是莫克?
\n\n\n\n\xe2\x80\x98&&\xe2\x80\x99 和 \xe2\x80\x98||\xe2\x80\x99 运算符因其工作方式而被称为短路运算符。如果可以在计算过程中确定结果,则完整表达式的计算为 \xe2\x80\x9cshort-circled\xe2\x80\x9d。
\n
默认情况下,gawk 使用constant-folding优化代码。
这发生在程序运行之前。
可以通过以下方式关闭它-s:
$ gawk 'BEGIN { 0 && 4/0; print "ok" }'
gawk: cmd. line:1: error: division by zero attempted
$ gawk -s 'BEGIN { 0 && 4/0; print "ok" }'
ok
$
Run Code Online (Sandbox Code Playgroud)