偶然我做了
gawk 'BEGIN { print 1.2.3+4; }'
并收到
1.24.3
由于数字中的两个点,我预计会出现语法错误。
这里发生了什么 ?
这是 GNU awk 中的错误还是功能?
这些版本的结果相同:GNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)
来自 Ubuntu 16.04 和
GNU Awk 4.1.0, API: 1.0 (GNU MPFR 3.1.2, GNU MP 4.3.2)
来自 cygwin。
表达方式
gawk 解析为两个数字表达式:
1.2
和.3+4
。(第二个点不允许成为第一个表达式的一部分,因此解析器将其视为另一个表达式的开始。)
第二个表达式是 和 的总和
.3
,4
gawk 正确求值,获得4.3
.然后它打印
1.2
和4.3
(没有分隔符):