这是我的测试代码
#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不起作用的条件
可能是什么问题?
答案 0 :(得分:6)
uint8_t
是typedef
的{{1}}。这意味着将从unsigned char
读取一个字符。
当读取cin
时,它实际上是字符"0"
的ascii值48,这不是零,因此等式检查失败。
答案 1 :(得分:4)
uint8_t
与char
相同,因此尝试从cin中提取一个可能只是为您提供要输入的下一个字符。
接收的值不是字符转换为int,而是输入的ascii值。当你输入0时,你得到的是ascii \ 0而不是int 0,所以不会触发你的零测试。试试if( a == '0')
看看我的意思。