Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对小整数(C+;+;)使用字符_C++_Integer_Char - Fatal编程技术网

C++ 对小整数(C+;+;)使用字符

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),

我读到可以用“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),它与整数采用相同的整数算法

这里的问题是内部表示法(二进制数表示-127到+127范围)与外部表示法之间的概念混淆,传统上,输入和输出函数将其表示为“符号,其ASCII码是其携带的数字”,而对于整数,外部表示法是“读取方式类似于十进制形式的整数的字符序列”


将其打印为数字的最简单方法是将其转换为
int
,然后再将其交给输出函数(如
cout对于单个对象,
运算符会过载,因此,代码大小的增加可能会淹没存储大小的减少(对齐填充可能需要对象后面的内存)使用
int
除非你需要一个大的小整数数组。

你在哪里读到的?无论如何,它应该是无符号的chat a='4';它将被存储为一个字符而不是整数。char被隐式用作字符,以防止这种转换为int:
std::cout@krammer:这取决于他想要什么,你的意思是char not chat,对吗?@bames53
signed 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;