1. ホーム
  2. c++

[解決済み] std::numeric_limits<unsigned char>のメンバーを呼び出す前に単項の "+"を付けるのは何のためですか?

2022-07-08 12:37:57

質問

私は のドキュメントで、この例は std::numeric_limits

#include <limits>
#include <iostream>

int main() 
{
    std::cout << "type\tlowest()\tmin()\t\tmax()\n\n";

    std::cout << "uchar\t"
              << +std::numeric_limits<unsigned char>::lowest() << '\t' << '\t'
              << +std::numeric_limits<unsigned char>::min() << '\t' << '\t'
              << +std::numeric_limits<unsigned char>::max() << '\n';
    std::cout << "int\t"
              << std::numeric_limits<int>::lowest() << '\t'
              << std::numeric_limits<int>::min() << '\t'
              << std::numeric_limits<int>::max() << '\n';
    std::cout << "float\t"
              << std::numeric_limits<float>::lowest() << '\t'
              << std::numeric_limits<float>::min() << '\t'
              << std::numeric_limits<float>::max() << '\n';
    std::cout << "double\t"
              << std::numeric_limits<double>::lowest() << '\t'
              << std::numeric_limits<double>::min() << '\t'
              << std::numeric_limits<double>::max() << '\n';
}

の"+"演算子がよくわからないのですが。

<< +std::numeric_limits<unsigned char>::lowest()

試しに、"-"に置き換えてみましたが、これもうまくいきました。 このような"+"演算子の使い道は何でしょうか?

どのように解決するのですか?

出力演算子 << を渡されたとき char (符号付きでも符号なしでも) が渡されると、それを 文字 .

これらの関数は unsigned char . そして上で述べたように、それはそれらの値が整数値ではなく、現在のエンコーディングで表す文字を表示します。

+ 演算子は unsigned char に変換します。 int を通して 整数プロモーション . つまり、整数値が代わりに表示されることになります。

のような式は +std::numeric_limits<unsigned char>::lowest() とは本質的に同じです。 static_cast<int>(std::numeric_limits<unsigned char>::lowest()) .