gitのソースコードを読むと、このマクロが混乱します。型の10進表現の長さの近似
/* Approximation of the length of the decimal representation of this type. */
#define decimal_length(x) ((int)(sizeof(x) * 2.56 + 0.5) + 1)
しかし、私はタイプの10進数表現の長さの近似値を計算しようとすると、私は答えは
として記述することができ((int)(sizeof(x) * 8 * ln2) + 1)
だと思います
((int)(sizeof(x) * 2.41) + 1)
gitが長さを計算する理由を教えてください。 "(sizeof(x)* 2.41)"の代わりに "(sizeof(x)* 2.56 + 0.5)"ですか?
ありがとうございました。
"なぜこのように設計されているのですか"は、通常、著者が決定的な回答を与えることができるため、StackOverflowでは対応できません。 –
私は、指定された型の符号付き整数を出力するのに必要な最大文字数を計算するために使用されていると仮定します。あなたの推論は正しいです。しかし、sizeof(x)が1,2,4、または8であるときに正しい答えが得られる限り、それは本当に重要ではありません。 –
8ビットから128ビットに正解を得るには '((int)(sizeof(x)* 2.41 + 1.65))')にする必要があります。 – user3386109