1

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

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

2 回答 2

4

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

为了便于说明,我们假设它char是无符号的,8 位宽,int32 位宽。这样的分配会做的是砍掉前 24 位,留下后 8 位。

截断与整数的小数位数没有任何关系。例如,9999会变成15(因为9999 & 0xFF == 15)。

于 2013-01-05T16:11:32.543 回答
1

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

unsigned char我相信,标准要求长度为 1 个字节。int通常更长,通常为 4 个字节。因此,当您输入一个大于 255 的数字时,它会丢失所有高于该值的值,因为它只能保存一个字节并且前导 3 个字节的数据会丢失。

于 2013-01-05T16:12:56.383 回答