awk'{printf“%d”,49420877107}'打印错误的号码2147483647

时间:2018-02-02 07:08:06

标签: bash shell awk

我在不同的电脑上运行相同的shell代码 awk'{printf“%d”,49420877107}',但得到不同的答案。

PC一 Shell

awk --version
GNU Awk 4.1.3

System Information

PC二 Shell

awk --version 
awk:not an option
awk -W version
mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan
compiled limits:
max NF             32767
sprintf buffer      2040

awk '{printf "%d ", 49420877107}'
2147483647

System Information

有人知道原因吗?非常感谢。

2 个答案:

答案 0 :(得分:3)

第二个,显示2147483647将%d视为4字节整数,其中第一个PC使用更多字节,可能是长字节。这将取决于在该机器上编译awk的方式或使用的awk版本。

结帐:https://superuser.com/questions/646919/how-can-i-find-my-awk-version

答案 1 :(得分:0)

您确定awk的版本是否相同?

  1. 在两个系统上使用$awk --version
  2. 然后检查两个系统上的号码OFMT/CONVFMT awk 'BEGIN { print "Conversion Format =", CONVFMT }'的转换格式