我无意中
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。
答案1
表达方式
1.2.3+4
gawk 解析为两个数字表达式: 1.2
和.3+4
。
(第二个点是不允许作为第一个表达式的一部分,因此解析器将其视为另一个表达式的开始。)
.3
第二个表达式是和的总和4
,gawk 正确计算得出4.3
。
然后它打印1.2
和4.3
(不带分隔符):
1.24.3