如何使用任何其他类型的1LL进行类似的演员表?

Ter*_*osa 3 c++ types casting

这有意义吗?

    static_cast<long long>(1) == 1LL
    static_cast<float>(1) =? 1F 
Run Code Online (Sandbox Code Playgroud)

是否有一种简短的方法可以为其他类型的浮雕制作?非常感谢你!

awe*_*oon 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;
}
Run Code Online (Sandbox Code Playgroud)


Mik*_*our 6

这个答案描述了C++ 11.用户定义的文字和某些类型在该语言的历史版本中不存在.

整型常量可以从一无所有结束,L,LL,U,ULULL给人一种类型的int,long,long long,unsigned int,unsigned longunsigned long long分别.如果你愿意,这些可以是小写的; 如果需要表示该值,实际类型可能比指定的宽.

浮点文本可以与什么都没有,结束FL给人一种类型的double,floatlong double分别.如果你愿意的话,这些可以是小写的.

字符和字符串可以从一无所有开始,u,U或者L,给人一种字符类型char,char16_t,char32_twchar_t分别.字符串也可以从u8表示charUTF-8编码的字符类型开始.

您还可以定义自己的用户定义的文字来制作任何类型的文字,如果您发现123_km更可读的奇怪的东西kilometres(123).我没有看到这一点,但如果你有兴趣,有人发了一个例子.