広告スペース

第12回 確認問題(if)

C言語のif文の理解度を確認するクイズ。

確認問題1 ― if(a==10) の動作

int a = 10;
if (a == 10) {
  printf("Aです\n");
  a = 20;
}
printf("a = %d\n", a);

出力結果は?

Aです
a = 20
Aです
a = 10
a = 20
解説: a==10 は真 → if内を実行 → "Aです" 表示 → aを20に上書き → 最後に a=%d でaの現在値(20)を表示。

確認問題2 ― if(a=10) の落とし穴

int a = 3;
if (a = 10) {    // = は代入! (== の誤り)
  printf("入った\n");
}
printf("a = %d\n", a);

出力結果は?

a = 3 (ifに入らない)
入った
a = 10
コンパイルエラー
解説: a = 10代入式で、その値は10(非ゼロ=真)。よってif内が実行されます。さらに、a自体が10に書き換わっているため、最後の出力は a = 10
Cはこれをエラーにせず、警告だけ出すことも。意図せぬバグの温床です。

確認問題3 ― AND/OR の組み合わせ

int x = 5;
if (x > 0 && x < 10 || x == 100) {
  printf("OK\n");
}

出力結果は?

OK
(何も出力されない)
コンパイルエラー
解説: &&|| より優先されるので、実質 (x>0 && x<10) || x==100
x=5 のとき、(5>0 && 5<10) = 真 → 全体も真 → "OK" を表示。
優先順位が曖昧なときは必ずカッコを使って明示しましょう。
広告スペース

関連する講座

条件分岐編
第11回 条件分岐(if文)
C言語のif文の書き方。条件分岐をフローチャートで視覚的に理解。
条件分岐編
第13回 else if・switch
C言語のelse if文とswitch文の使い方。複数条件分岐を解説。
演算子編
第10回 比較・論理演算子
C言語の比較演算子(==, !=, <, >)と論理演算子(&&, ||, !)を解説。
← 前の講座
第11回 条件分岐(if文)
次の講座 →
第13回 else if・switch
この記事をシェア
X(Twitter)でシェア Facebookでシェア LINEで送る はてブ

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

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

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

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