広告スペース

第5回 確認問題(変数・printf)

C言語の変数とprintfの理解度を確認するクイズ。

確認問題1 ― 代入の順番を追う

以下のプログラムを実行すると、どのような結果が得られるか予測してから答えを選びましょう。
#include<stdio.h>

int main(void){
  int a, b;
  a = 10;
  b = 30;
  b = a;
  a = 5;
  printf("a は %d, b は%d \n", a, b);
  return 0;
}

出力結果は?

a は 10, b は 30
a は 5, b は 10
a は 5, b は 30
a は 10, b は 10
解説: 代入を順番に追うと...
a=10 → a:10
b=30 → b:30
b=a → bにaの値(10)を代入 → b:10(30は上書きされて消える)
a=5 → aを5に上書き → a:5
a は 5, b は 10
a
b

確認問題2 ― int型に%fを使うとどうなる?

確認問題1と同じプログラムですが、printfの%d%fに変えています。
int a, b;
a = 10; b = 30; b = a; a = 5;
printf("a は %f, b は%f \n", a, b); // %fに変更!

出力結果は?

a は 5.000000, b は 10.000000
a は 0.000000, b は 0.000000
コンパイルエラー
解説: int型の変数に%f(実数用)を使うと、正しい値は表示されません
環境によって表示は異なりますが、0.000000や意味不明な数値になります。
int型には%d、double型には%fを使いましょう!

確認問題3 ― double型に%dを使うとどうなる?

double a, b;
a = 3.1; b = 2.6; b = 2.12; a = 4.52;
printf("a は %f, b は%d \n", a, b); // bだけ%d!

出力結果は?

a は 4.520000, b は 2.120000
a は 4.520000, b は 2
a は 4.520000, b は(意味不明な数値)
解説: aは%fで正しく表示(4.520000)されますが、bはdouble型なのに%d(整数用)を指定しているため、正しく表示されません
環境によっては -488420520 のような意味不明な値が表示されます。
double型の表示には必ず%fを使いましょう。
広告スペース

関連する講座

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

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

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

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

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