2

fact以下のような割り当てを行う場合、bash シェルは変数をデフォルトで整数または long と見なしますか?

fact=2
4

1 に答える 1

5

ない。文字列として扱われます。すべてのシェル変数の値は、特に宣言されていない限り (たとえばdeclare -i fact、非標準のシェル拡張で) 文字列です。「何ビットあり、符号があるか」という問題は、 で算術展開を行うか、変数値を引数としてや など$(())の他のツールに渡す場合にのみ意味があります。exprbc

算術展開のためのPOSIXシェル仕様は言う

符号付き長整数演算のみが必要です。

bashマニュアルは保証するだけです

評価はオーバーフローのチェックなしで固定幅整数で行われますが、0 による除算はトラップされ、エラーとしてフラグが立てられます。

Csigned longは >= 32 ビットであることを保証しているため、少なくとも 32 ビットの符号付き算術演算を安全に想定できます。64ビットシステムでは64ビットを期待しています。

于 2013-06-01T19:59:13.587 に答える