c++ - 将类型分配给原始文字的简写方式

标签 c++ types overloading literals

在没有转换的情况下将类型分配给原语的方法有哪些? 我知道 0.0 变成了 double 而 0.0f 变成了 float。还有其他方法可以对文字进行类型转换吗?

最佳答案

有一堆suffixes你可以添加到整数文字以获得你想要的类型:

1    // int
2u   // unsigned int
3ll  // long long int
4ull // unsigned long long int

同样,对于floating literals ,没有后缀给你doublef给你floatl给你long double.

对于小于 int 的类型,没有预先打包的文字后缀。但是你可以自己写,例如:

inline uint16_t operator ""_u16(uint64_t value) {
    return static_cast<uint16_t>(value);
}

5_u16 // uint16_t

除了 VC 显然为所有类型提供了文字后缀 - 比如 10i16 给你一个 int16_t

关于c++ - 将类型分配给原始文字的简写方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42372745/

相关文章:

python - 重载 __getitem__ 接受另一个参数

C++ 相同的方法签名但不同的返回类型

c++ - lambda 可以作为 C++17 中的模板参数传递吗?

c++ - 轻松的排序和线程间可见性

c - 尝试.c :8: error: incompatible types in initialization - c

sql - 如何根据字符串 id 删除 PostgreSQL 数据库中的多行?

java - 在java中重写具有更多参数的方法?

C++使用参数在数组中分配和构造对象

c++ - 如何知道C和C++中数据和代码的虚拟地址?

haskell - 类型类、重载和实例声明