如何获取std :: numeric_limits <char> :: min()值?

qaz*_*wsx 3 c++ types

如何获得(正确和/或可读的价值)std::numeric_limits<char>::min()

cout << std::numeric_limits<char>::min() << endl;
cout << std::numeric_limits<char>::max() << endl;
Run Code Online (Sandbox Code Playgroud)

返回

?
  // some character that can't be copied here, it looks like a rectangle containing four numbers in it                  
Run Code Online (Sandbox Code Playgroud)

CB *_*ley 7

您只需要将其转换为流式传输时cout将其解释为整数的内容.例如

#include <limits>
#include <iostream>
#include <ostream>

int main()
{
    int minc = std::numeric_limits<char>::min();
    unsigned maxc = std::numeric_limits<char>::max();

    std::cout << minc << std::endl;
    std::cout << maxc << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我特意使用unsignedstd::numeric_limits<char>::max()的情况下,只是sizeof(int) == 1char无符号.


R. *_*des 5

问题是标准流将输出chars作为字符而不是整数值.您可以通过强制转换为非字符类型的整数类型来强制它们执行此操作:

cout << (int)std::numeric_limits<char>::min() << endl;
cout << (int)std::numeric_limits<char>::max() << endl;
Run Code Online (Sandbox Code Playgroud)

  • @ user6076具有最小值和最大值的字符可能没有可视识别的形式(如实验所示).我以为你想打印数字,因为最小和最大的概念只有在你处理*数字*而不是*字符*时才有意义. (2认同)