C ++中“char”类型的限制

时间:2014-05-19 10:28:13

标签: c++

我想知道是否有任何方法可以找出C ++中为char(std::numeric_limits<int>::min())提供的字符串的限制?

1 个答案:

答案 0 :(得分:3)

std::numeric_limits<char>::min()应该有用。

如果要打印该值,请确保将其转换为整数。这是因为默认情况下,C ++ i / o流将8位整数值转换为它们的ASCII对应物(编辑它们实际上不会像这样转换 - 请参阅@MSalters的评论)。 / p>

代码:

static const auto min_signed_char = std::numeric_limits<char>::min();
std::cout << "char min numerical value: "
    << static_cast<int>(min_signed_char) << "\n";

第二次编辑(由@MSalters发表评论)

  

另外,你的min_signed_char表明char已签名。这是一个不正确的假设 - char与signed char或unsigned char具有相同的范围。

虽然char具有相同的位大小(一个字节),但它没有相同的范围:

代码:

#include <limits>
#include <iostream>

int main(int argc, char* argv[])
{
std::cout << "min char: "
           << static_cast<int>(std::numeric_limits<char>::min()) << "\n";
std::cout << "min unsigned char: "
           << static_cast<int>(std::numeric_limits<unsigned char>::min()) << "\n";
}

产生输出:

min char: -128
min unsigned char: 0

也就是说,虽然范围的大小是相同的(8位),但范围本身依赖于符号。