C++中"char"类型的限制
Limits of "char" type in C++
我想知道是否有任何方法可以找出c++中为int (std::numeric_limits<int>::min()
)提供的行上的char的限制?
std::numeric_limits<char>::min()
应该可以工作。
如果要打印该值,请确保将其转换为整数。这是因为默认情况下,c++ i/o流将8位整数值转换为对应的ASCII值(编辑它们并没有真正这样转换——参见@MSalters的评论)。
代码: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与有符号char或无符号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位),但范围本身确实依赖于符号。