• 締切済み

if文の条件にscanf関数を使うと…?

if(scanf("%d",&data)!=1) と scanf("%d",&data); if(data!=1) って意味が違いますよね? 後者の意味は、dataに1以外の数値が入力されたら…っていう意味なのは分かりますが、前者の意味は何なんですか? よろしくお願いいたします。

みんなの回答

  • 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になったのかなどを判定する処理です。

関連するQ&A