- 締切済み
if文の条件にscanf関数を使うと…?
if(scanf("%d",&data)!=1) と scanf("%d",&data); if(data!=1) って意味が違いますよね? 後者の意味は、dataに1以外の数値が入力されたら…っていう意味なのは分かりますが、前者の意味は何なんですか? よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- arukamun
- ベストアンサー率35% (842/2394)
回答No.2
前者は scanfの戻り値が1じゃなければTRUE、1ならばFALSE という事をやっています。 では、scanfの戻り値は何かというと、正常にデータを代入できた引数の個数です。 今回のように scanf("%d",&data); だと引数が1個なので、scanfが成功すれば、1が scanfが失敗するとEOFだったと思います。
- neKo_deux
- ベストアンサー率44% (5541/12319)
回答No.1
scanfのヘルプなどを見ると、 | 戻り値 | 正しく変換され、代入されたフィールドの数を返します。 ですから、 「1」が入力されれば、dataに1が入り、返り値は1。 「0」が入力されれば、dataに0が入り、返り値は1。 「A」が入力されれば、dataに0が入り、返り値は0。(dataに入る値は処理系により異なります。) 入力値が正しく0と入力されたのか、変換できずに0になったのかなどを判定する処理です。