截断数字

Truncating of digits

本文关键字:数字      更新时间:2023-10-16

我正在检查以下代码。它基本上截断通过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个字节的数据会丢失。