広告スペース

第6回 確認問題(scanf)

C言語のscanfの理解度を確認するインタラクティブなクイズ。

確認問題1 ― scanf の基本

int a;
double b;
printf("aの値を入力:");
scanf("%d", &a);
printf("bの値を入力:");
scanf("%lf", &b);
printf("a は %d, b は%f \n", a, b);
aに5、bに3を入力した場合の出力は?

出力結果は?

a は 5, b は3.000000
a は 5, b は3
a は 5.000000, b は3.000000
解説: aはint型で%dで表示→5。bはdouble型で%fで表示→3.000000(%fはデフォルトで小数点以下6桁)。正しい書式指定子を使っているので正常に表示されます。

確認問題2 ― & を忘れたらどうなる?

scanf("%d", a);   // ← &がない!
scanf("%lf", b);  // ← &がない!

何が起こる?

正常に動作する
エラーが発生し、入力直後にプログラムが止まる
0が表示される
解説: scanfでは変数のアドレス(&をつけたもの)を渡す必要があります。&がないと、変数の「値」をアドレスとして解釈するため、不正なメモリアクセスが発生してプログラムが異常終了します。
scanfには必ず&をつけましょう!

確認問題3 ― scanf で型を間違えたら?

int型aの入力に%lf、double型bの入力に%dを使っています。
int a;
double b;
scanf("%lf", &a);  // intなのに%lf!
scanf("%d", &b);   // doubleなのに%d!
aに3、bに5を入力した場合、printf("a=%d, b=%f", a, b) の結果は?

出力結果は?

a は 3, b は 5.000000
a は 0, b は 0.000000(正しく表示されない)
コンパイルエラー
解説: scanfの書式と変数の型が一致しないと、メモリへの書き込みサイズが合わず、正しい値が格納されません。環境によって表示は異なりますが、期待した値にはなりません。
scanf:整数は%d、実数は%lfを正しく設定しましょう。
広告スペース

関連する講座

入門編
第4回 printf・scanf
C言語のprintf関数とscanf関数の使い方。書式指定子を一覧で解説。
入門編
第5回 確認問題(変数・printf)
C言語の変数とprintfの理解度を確認するクイズ。
入門編
第3回 変数
C言語の変数とは?int, double, charの使い方を図解で解説。
← 前の講座
第5回 確認問題(変数・printf)
次の講座 →
第7回 算術演算子
この記事をシェア
X(Twitter)でシェア Facebookでシェア LINEで送る はてブ

この講座の理解を深めるおすすめ書籍

サイトで動きを理解し、書籍で演習量を補うと効果的です

📘
苦しんで覚えるC言語
MMGames 著
初心者向けの定番入門書。丁寧な解説で基礎を固められます。
Amazonで見る
📗
新・明解C言語 入門編
柴田望洋 著
図解が豊富で、演習問題も充実。大学の教科書としても採用多数。
Amazonで見る
📙
プログラミング言語C 第2版
B.W.カーニハン, D.M.リッチー 著
通称K&R。C言語の原典。基礎を終えた後のステップアップに最適。
Amazonで見る

※ 上記リンクはアフィリエイトリンクです。購入によりサイト運営を支援いただけます。