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 つの別個の入力として受け取ります

問題 2: a==0 が機能しない場合の条件

どのような問題が考えられますか?

4

2 に答える 2

9

uint8_ttypedefですunsigned char。これは、 から 1 文字が読み取られることを意味しcinます。

"0"読み取られると、実際には文字の ASCII 値である'0'一般的に 48 であり、これはゼロではないため、等価チェックは失敗します。

于 2012-07-03T10:24:35.547 に答える
4

uint8_tは a と同じなcharので、cin から 1 つを抽出しようとすると、おそらく次の文字が入力されるだけです。

受け取る値は、文字を int に変換したものではなく、入力の ascii 値です。0 を入力すると、int ゼロではなく ascii \0 が取得されるため、ゼロのテストはトリガーされません。if( a == '0')私が何を意味するか見てみてください。

于 2012-07-03T10:23:15.330 に答える