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