2

fact如果您进行如下分配,bash shell 是否默认将变量视为整数或长整数?

fact=2
4

1 回答 1

5

两者都不。它被视为一个字符串。所有shell 变量值都是字符串,除非另有声明(例如declare -i fact,使用非标准shell 扩展名)。$(())只有当您使用或将变量值作为参数传递给其他工具(如expror )进行算术扩展时,“有多少位以及是否有符号”的问题才有意义bc

算术扩展的POSIX Shell 规范说

只需要有符号长整数运算。

bash 手册只保证

评估是在固定宽度的整数中完成的,不检查溢出,尽管除以 0 会被捕获并标记为错误。

由于 C 保证signed long>= 32 位,您可以放心地假设至少 32 位有符号算术。我希望 64 位系统上有 64 位。

于 2013-06-01T19:59:13.587 回答