C++ 对小整数(C+;+;)使用字符
我读到可以用“char”表示小整数。但是当我尝试的时候,C++ 对小整数(C+;+;)使用字符,c++,integer,char,C++,Integer,Char,我读到可以用“char”表示小整数。但是当我尝试的时候, unsigned char A = 4; std::cout << A << std::endl; 无符号字符A=4; std::cout应该是 unsigned char A = 4; std::cout << (int)A << std::endl; 无符号字符A=4; std::cout您正在经历的是运算符重载的影响。字符char是一个小整数(范围为-127到+127),
unsigned char A = 4;
std::cout << A << std::endl;
无符号字符A=4;
std::cout应该是
unsigned char A = 4;
std::cout << (int)A << std::endl;
无符号字符A=4;
std::cout您正在经历的是运算符重载的影响。字符char是一个小整数(范围为-127到+127),它与整数采用相同的整数算法
这里的问题是内部表示法(二进制数表示-127到+127范围)与外部表示法之间的概念混淆,传统上,输入和输出函数将其表示为“符号,其ASCII码是其携带的数字”,而对于整数,外部表示法是“读取方式类似于十进制形式的整数的字符序列”
将其打印为数字的最简单方法是将其转换为int
,然后再将其交给输出函数(如cout对于单个对象,运算符会过载,因此,代码大小的增加可能会淹没存储大小的减少(对齐填充可能需要对象后面的内存)使用int
除非你需要一个大的小整数数组。你在哪里读到的?无论如何,它应该是无符号的chat a='4';它将被存储为一个字符而不是整数。char被隐式用作字符,以防止这种转换为int:std::cout@krammer:这取决于他想要什么,你的意思是char not chat,对吗?@bames53signed char
通常与char
具有相同的表示形式,它们仍然是不同的类型。@krammer:不,关键是OP希望在char
中存储一个整数值,这是完全有效的。
unsigned char A = 4;
std::cout << static_cast<unsigned int>(A) << std::endl;
std::cout << (int)A << std::endl;
std::cout << static_cast<int>(A) << std::endl;
std::cout << +A << std::endl;