3

これは意味がありますか?

    static_cast<long long>(1) == 1LL
    static_cast<float>(1) =? 1F 

フロートなどの他のタイプのキャストを作成する簡単な方法はありますか? どうもありがとうございました!

4

2 に答える 2

8

C++11 以降、独自のリテラルを定義できます。たとえば、次の_Fようにリテラルを定義できます。

float operator"" _F(unsigned long long l)
{
    return static_cast<float>(l);
}

int main()
{
    auto a = 1_F;
    static_assert(std::is_same<decltype(a), float>::value, "Not a float");
    return 0;
}
于 2013-05-07T16:38:58.933 に答える
6

この回答はC++ 11について説明しています。ユーザー定義のリテラルと一部の型は、言語の歴史的なバージョンには存在しませんでした。

整数リテラルは、、 、 、または 、 、、、またはそれぞれLLL型を指定することなく終了できます。これらは、必要に応じて小文字にすることができます。また、値を表すために必要な場合、実際の型は指定されたものよりも幅が広い場合があります。UULULLintlonglong longunsigned intunsigned longunsigned long long

浮動小数点リテラルは、何も指定せずに終了することも、それぞれ、FまたはLの型を指定することもできます。繰り返しますが、これらは必要に応じて小文字にすることができます。doublefloatlong double

文字リテラルと文字列リテラルは、それぞれ、、またはの文字型を指定して、何もない 、 uUまたはで始めることができます。文字列は、UTF-8 エンコーディングの文字タイプを示すためにで始めることもできます。Lcharchar16_tchar32_twchar_tu8char

独自のユーザー定義リテラルを定義して、任意のタイプのリテラルを作成することもでき123_kmますkilometres(123). その要点はわかりませんが、興味があれば誰かが例を投稿しています。

于 2013-05-07T16:49:18.627 に答える