6

这是我的测试代码

#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 不起作用的条件

可能有什么问题?

4

2 回答 2

9

uint8_t是一个typedef为一个unsigned char。这意味着将从中读取一个字符cin

读取时"0",它实际上是字符的 ascii 值,'0'通常为 48,它不为零,因此相等性检查失败。

于 2012-07-03T10:24:35.547 回答
4

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

然后,要接收的值不是字符转换为 int,而是输入的 ascii 值。当您键入 0 时,您将获得 ascii \0 而不是 int 零,因此不会触发您对零的测试。试着if( a == '0')看看我的意思。

于 2012-07-03T10:23:15.330 回答