uint8_t不需要两位数输入

时间:2012-07-03 10:21:37

标签: c++ uint

这是我的测试代码

#include<iostream>
using namespace std;
int main() 
{
    uint8_t a;
    while(1)
    {
        cin>>a;
        if(a == 0) break;
        cout<<"Input is "<<a<<endl;
    }
}  

当我执行(使用我的输入)时,这就是我得到的

1
Input is 1
2
Input is 2
12
Input is 1
Input is 2
0
Input is 0
3  
Input is 3

问题1:它将输入12作为两个独立的输入

问题2:如果a == 0不起作用的条件

可能是什么问题?

2 个答案:

答案 0 :(得分:6)

uint8_ttypedef的{​​{1}}。这意味着将从unsigned char读取一个字符。

当读取cin时,它实际上是字符"0"的ascii值48,这不是零,因此等式检查失败。

答案 1 :(得分:4)

uint8_tchar相同,因此尝试从cin中提取一个可能只是为您提供要输入的下一个字符。

接收的值不是字符转换为int,而是输入的ascii值。当你输入0时,你得到的是ascii \ 0而不是int 0,所以不会触发你的零测试。试试if( a == '0')看看我的意思。