我想知道是否有任何方法可以找出C ++中为char(std::numeric_limits<int>::min()
)提供的字符串的限制?
答案 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位),但范围本身依赖于符号。