截断数字

时间:2013-01-05 16:08:23

标签: c++

我正在浏览以下代码。它基本上截断了通过 cin 对象输入的字符的数字。问题是我不知道如何为字符对象分配一个int值截断除第一个之外的数字。

#include <iostream>
using namespace std;
int main(){
    unsigned int integer;
    unsigned char character;
    cin >> integer;
    character = integer;
    cout << character ;
}

2 个答案:

答案 0 :(得分:4)

  

问题是我不知道如何为字符对象分配int值会截断除第一个之外的数字。

为了说明,我们假设char是无符号的,是8位宽,int是32位宽。这样的任务将做的是砍掉前24位,留下最后8位。

截断与整数的十进制数字无关。例如,9999将变为15(因为9999 & 0xFF == 15)。

答案 1 :(得分:1)

我不确定你的意思是“除了第一个。”但让我看看能不能解释发生了什么。

我认为,

unsigned char标准要求长度为1个字节。 int通常更长,典型的是4个字节。因此,当您输入一个> 255的数字时,它会丢失上面的所有值,因为它可以容纳的是一个字节,前导3个字节的数据丢失。