c++ - 如何在 C++ 中指定 unsigned char 类型的整数文字?

标签 c++ integer constants language-lawyer

我可以指定一个 unsigned long 类型的整数文字,如下所示:

const unsigned long example = 9UL;

对于 unsigned char 我该如何处理?

const unsigned char example = 9U?;

这是避免编译器警告所必需的:

unsigned char example2 = 0;
...
min(9U?, example2);

我希望避免我目前拥有的冗长解决方法,并且没有在调用 min 的行中出现“unsigned char”而不在单独的行上的变量中声明 9:

min(static_cast<unsigned char>(9), example2);

最佳答案

C++11 引入了用户定义的文字。可以这样使用:

inline constexpr unsigned char operator "" _uchar( unsigned long long arg ) noexcept
{
    return static_cast< unsigned char >( arg );
}

unsigned char answer()
{
    return 42;
}

int main()
{
    std::cout << std::min( 42, answer() );        // Compile time error!
    std::cout << std::min( 42_uchar, answer() );  // OK
}

关于c++ - 如何在 C++ 中指定 unsigned char 类型的整数文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2304732/

相关文章:

c++ - 如何使用ndk加载Android的AAudio API

c++ - 这个 C++ const 引用访问器接口(interface)习惯用法有什么问题吗?

在 C 中将 "ASCII decimal"转换为整数

C++:如何创建一个临时对象,包含一个指针 - const 或非常量,具体取决于上下文?

c++ - 如果方法是const,如何找到 vector 的中值?

c++ - g++ -std=c++0x 和兼容性

c++ - 编译器执行并提供默认构造函数的构造函数代码内部发生了什么?

c++ - Lambda 按值捕获和不可复制的对象

c - 使用 fscanf 从文件中读取字符串、整数等

java - 如何在 Java 中将整数转换为 bigdecimal