1

以下代码:`

unsigned char agevalue;  
cout<<"what is your age?"<< endl;
cin >> agevalue;
cout<<"your age is:"<< agevalue <<endl;`

切掉大于 9 的值,只留下第一个数字。这可能是什么原因?

4

3 回答 3

10

尽管unsigned char在某些情况下被视为整数,但它主要用于表示单个字符。因此,您的代码只读取第一个数字。如果您想读取一个数字,您需要使用其中一种非char整数类型,例如int(如果您需要整数,这应该是您的默认选择)。

于 2013-09-25T14:24:36.490 回答
5

这是因为您正在读取一个字符而不是整数。

于 2013-09-25T14:23:36.950 回答
0

如果您希望获取数字,则需要使用正确的数据类型:

unsigned short ageValue = 0;
cout << "What is your age?" << endl;
cin >> ageValue;
cout << "Your age is " << agevalue << endl;

如果您真的想将年龄值存储在字节大小的整数(而不是半字)中:

unsigned char ageValue = 0;
unsigned short inputValue = 0;
cout << "What is your age?" << endl;
cin >> inputValue;
ageValue = static_cast<unsigned char>(inputValue);
cout << "Your age is " << static_cast<unsigned short>(agevalue) << endl;
于 2013-09-25T14:27:41.133 回答