我正在浏览以下代码。它基本上截断了通过cin对象输入的字符的数字。问题是我不知道如何将 int 值分配给字符对象会截断除第一个之外的数字。
#include <iostream>
using namespace std;
int main(){
unsigned int integer;
unsigned char character;
cin >> integer;
character = integer;
cout << character ;
}
我正在浏览以下代码。它基本上截断了通过cin对象输入的字符的数字。问题是我不知道如何将 int 值分配给字符对象会截断除第一个之外的数字。
#include <iostream>
using namespace std;
int main(){
unsigned int integer;
unsigned char character;
cin >> integer;
character = integer;
cout << character ;
}
问题是我不知道如何将 int 值分配给字符对象会截断除第一个之外的数字。
为了便于说明,我们假设它char
是无符号的,8 位宽,int
32 位宽。这样的分配会做的是砍掉前 24 位,留下后 8 位。
截断与整数的小数位数没有任何关系。例如,9999
会变成15
(因为9999 & 0xFF == 15
)。
我不确定您所说的“除了第一个”是什么意思。但让我看看我能不能解释发生了什么。
unsigned char
我相信,标准要求长度为 1 个字节。int
通常更长,通常为 4 个字节。因此,当您输入一个大于 255 的数字时,它会丢失所有高于该值的值,因为它只能保存一个字节并且前导 3 个字节的数据会丢失。