在 Bjarne 的“The C++ Programming Language”一书中,给出了以下关于字符的代码:
signed char sc = -140;
unsigned char uc = sc;
cout << uc // prints 't'
1Q) 字符在我的硬件中是 1 字节(8 位)。的二进制表示是-140
什么?是否可以使用 8 位表示 -140。我认为当考虑签名字符时,范围保证至少为 [-127...127]。怎么可能用 8 位表示 -140?
2Q)假设这是可能的。为什么我们140
要从分配到的uc
时间中减去?这背后的逻辑是什么?sc
uc
编辑:我写过cout << sizeof (signed char)
,它产生了 1(1 个字节)。我把它准确地放在signed char
.
编辑2: cout << int {sc }
给出输出116
。我不明白这里发生了什么?