2.計算する

  1. printfで数を表示する

    前回printf関数を用いて, 文字列を表示させることを学んだが,
    今回は, 数を表示させてみよう

    #include <stdio.h>
    
    int main()
    {
    	printf("1 + 1 = 2\n");
    	printf("1 + 1 = %d\n", 2);
    
    	return 0;
    }
    
    数を表示させるプログラムprint_num.c
    $./a.out
    1 + 1 = 2
    1 + 1 = 2

    ソースを見ると, printf関数を2回呼び出しているが, どちらも表示された内容は同じだ

    5行目のprintfは前回同様括弧の中に文字列を記述している

    しかし, 6行目のprintfは少し異なり, 2がダブルクォーテーションの外にあるが,
    代わりに, ダブルクォーテーションの中には, %dとある

    つまり, %dが2と置き換えられたのだ

    %dは与えられた数値を, 十進数(decimal)の整数として表示するという意味で,
    このようなものをフォーマット指定子という

    フォーマット指定子にはいくつか種類があるが,
    特によく使用するものを以下に示す

    指定子 意味 英単語
    %d 十進数の整数として表示 decimal
    %f 十進数の実数として表示 float
    %x 十六進数の整数として表示 hexadecimal(?)
    %c 文字として表示 character
    %s 文字列として表示 string

    では, フォーマット指定子を使う意味は何だろう
    結局同じ動作なら, 余計な引数をつける必要はあるのだろうか?

    ソースコードを以下のように変更すれば, 違いがわかるはずだ
    #include

    int main()
    {
    	printf("1 + 1 = 2\n");
    	printf("1 + 1 = %d\n", 1 + 1);
    
    	return 0;
    }
    
    print_num.cを変更したソースコード

    このソースコードを見ると, 6行目のprintfに与えていた第2引数が2ではなく1 + 1という計算式になっている

    ダブルクォーテーションの中では文字列としての1 + 1のため, そのまま表示されるが,
    ダブルクォーテーションの外に出した1 + 1は式が評価され,
    その結果(ここでは2)が%dと置き換わったのだ

    このように, ソースコードに書かれた計算式は, 基本的に実行の際直ちに評価され,
    他の処理よりも, 優先順位が高い

    そのため, 1だけでなく, その後ろにある+ 1もきちんと%dに反映されている

    この足し算を示す記号+は算術演算子といい, 数値の計算が可能だ

    注)数値と数字は異なる
     その名のとおり, 値としての数を数値, 文字としての数を数字という

    端末の場合, 複数の引数はスペース区切りで記述していたが,
    C言語の関数の場合は, カンマ(,)区切りで記述する

  2. 計算する

    算術演算子の一覧を以下に示す

    演算子 意味
    +
    -
    *
    /
    % 剰余

    これらの演算の意味を, 以下のプログラムを実行して確かめてみよう

    #include <stdio.h>
    
    int main()
    {
    	printf("3 + 2 = %d\n", 3+2);
    	printf("3 - 2 = %d\n", 3-2);
    	printf("3 * 2 = %d\n", 3*2);
    	printf("3 / 2 = %d\n", 3/2);
    	printf("3 %% 2 = %d\n", 3%2);
    
    	return 0;
    }
    
    各算術演算子の演算結果を表示するプログラム
    print_calc.c

    $./a.out
    3 + 2 = 5
    3 - 2 = 1
    3 * 2 = 6
    3 / 2 = 1
    3 % 2 = 1

    四則演算に関しては, 問題ないだろう
    掛け算を示す演算子がアスタリスク(*)であることに注意すれば通常の計算だ
    数学で扱う数式のように括弧(中括弧や大括弧は使えない)で囲うことで, 計算順序を変更することもできる

    問題はパーセント(%)
    数学では使わない演算子だが, C言語では剰余, つまり割り算のあまりを意味する

    今後, プログラムを書く上でかなり重宝するので覚えておこう

    Practice:

    1. 1 + 2 * 3(1 + 2) * 3などの結果を表示して, 各演算の優先順位を確認してみよう
    2. 3.0 / 2をフォーマット指定子%f(実数として表示)を用いて出力してみよう

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です