プロが教える店舗&オフィスのセキュリティ対策術

if(scanf("%d",&data)!=1)

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

A 回答 (2件)

前者は


scanfの戻り値が1じゃなければTRUE、1ならばFALSE
という事をやっています。
では、scanfの戻り値は何かというと、正常にデータを代入できた引数の個数です。

今回のように
scanf("%d",&data);
だと引数が1個なので、scanfが成功すれば、1が
scanfが失敗するとEOFだったと思います。
    • good
    • 1

scanfのヘルプなどを見ると、



| 戻り値
| 正しく変換され、代入されたフィールドの数を返します。

ですから、
「1」が入力されれば、dataに1が入り、返り値は1。
「0」が入力されれば、dataに0が入り、返り値は1。
「A」が入力されれば、dataに0が入り、返り値は0。(dataに入る値は処理系により異なります。)

入力値が正しく0と入力されたのか、変換できずに0になったのかなどを判定する処理です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A