(再度)署名済みのshortに正しい値を割り当てることはできません

c++
(再度)署名済みのshortに正しい値を割り当てることはできません

なぜこれが出力としてゼロを与えるのですか? いくつかのコンパイラが動作するのではないかと考えていますが、なぜですか?

  signed int sint_ = numeric_limits::min() << '\n';
    cout << "signed int: " << sint_ << '\n';

  0  0


ベストアンサー

これは、最初の行に偶然の `<< ‘\ n’`があるためです。 その効果は、最小値のビットを13ポジション左にシフトすることです(13は `\ n`の文字コードです)。 最も負の値のビットパターンは「1000 …​ 0」であるため、結果は0になります。

20


signed int sint_ = numeric_limits::min() << '\n';

最後にこの「\ n」とは何ですか?

これはあなたが望むものではありませんか:

signed int sint_ = numeric_limits::min();

?

デモ:http://ideone.com/aOXGH

2


タイトルとURLをコピーしました