C言語基礎|C言語の演算と型

現実の数値とプログラムの数値

もしも「身長と体重を教えてください」と聞かれて、
「身長は173cmで体重は62kgです」と答えたとします。

でも、よく考えると少し不思議ですね。
身長がちょうど173cmぴったり、ということはまずありません。

実際には、

  • 173.3cm かもしれませんし
  • 173.2869758…cm かもしれません

しかも、時間が経てば微妙に変化していきます。

それでも、普段の会話では
「173cmで十分」
ですよね。

プログラムの世界も同じ考え方

プログラムの世界でも、現実の値を完全に正確に表す必要はありません

必要なのは、

  • どのくらいの精度があれば十分か
  • その値をどう計算したいか

です。

C言語では、この「数値の扱い方」を決めるために、

  • 演算

という仕組みが用意されています。

この章では、C言語で数値を扱うための
最低限かつ非常に重要な知識 として、
演算と型の基本を学んでいきます。

演算とは何か

加算を行う +、
乗算を行う *、
こうした記号を 演算子 と呼びます。

1章では、

  • 足し算
  • 引き算
  • 掛け算

をすでに使ってきましたね。

この章では、それに加えて、

  • 割り算
  • 余り

も含めて、演算の全体像を整理していきます。

演算子とオペランド

まずは、用語を整理しましょう。

用語意味
演算子計算を指示する記号
オペランド計算の対象となる値

たとえば、次の式を見てください。

x + y

この場合、

  • 演算子:+
  • オペランド:x と y

になります。

オペランドには呼び方の違いもあります。

位置呼び方
左側第1オペランド / 左オペランド
右側第2オペランド / 右オペランド

この考え方は、後の章で学ぶ
比較演算や論理演算でもとても重要になります。

基本的な演算をまとめて確認しよう

それでは、複数の演算を一度に確認できるプログラムを見てみましょう。
以下は、元の例と同じ内容にならないように
表示メッセージや変数名を変えたサンプルです。

サンプルプログラム:二つの整数でいろいろ計算する

プロジェクト名:chap2-1-1 ソースファイル名:chap2-1-1.c

Visual Studio でこのプログラムを実行するには、SDLチェック設定を変更しておく必要があります。
1.プロジェクト名を右クリックして、「プロパティ」をクリックします。
2.「C/C++」→「全般」→「SDLチェック」を「いいえ」に切り替えて「OK」をクリックします。

// 二つの整数を使って基本的な演算を行う

#include <stdio.h>

int main(void)
{
    int a, b;

    puts("二つの整数を入力してください。");
    printf("整数 a:");  scanf("%d", &a);
    printf("整数 b:");  scanf("%d", &b);

    printf("a + b = %d\n", a + b);   // 加算
    printf("a - b = %d\n", a - b);   // 減算
    printf("a * b = %d\n", a * b);   // 乗算
    printf("a / b = %d\n", a / b);   // 除算
    printf("a %% b = %d\n", a % b);  // 剰余

    return 0;
}

実行例

二つの整数を入力してください。
整数 a:50
整数 b:14
a + b = 64
a - b = 36
a * b = 700
a / b = 3
a % b = 8

各演算の意味を整理する

ここで行っている演算を、表で整理してみましょう。

演算記号意味
加算+二つの値を足す
減算-左の値から右の値を引く
乗算*二つの値を掛ける
除算/左の値を右の値で割る
剰余%割り算の余りを求める

特に注意したいのが、除算と剰余です。

整数同士の割り算に注意

C言語では、

a / b

のように 整数同士で割り算 を行うと、
小数部分は切り捨て られます。

たとえば、

50 / 14

の結果は、

  • 実際の計算:3.5714…
  • C言語の結果:3

になります。

この挙動はエラーではなく、
型のルール通りの正しい動作 です。

この理由については、
次に学ぶ「型」の話と深く関係しています。

剰余演算の意味

剰余演算 % は、

割り算の余りを求める演算

です。

50 % 14

の場合、

  • 14 × 3 = 42
  • 50 − 42 = 8

となり、結果は 8 になります。

剰余演算は、

  • 偶数・奇数の判定
  • 周期的な処理

などで、後の章でも頻繁に登場します。

マイナスの結果も正しい

次の点も大切です。

a - b

は、

  • a と b の「差」を求めているのではない。
  • a から b を引いている。

という演算です。

そのため、
b のほうが大きければ、結果は負の値になります。

これは「間違い」ではなく、
演算の定義どおり の結果です。

この章でこれから学ぶこと

ここまでで、演算の基本的な形は見えてきました。

この先の節では、

  • 型による計算結果の違い
  • 整数型と実数型の使い分け
  • 演算の優先順位

などを、順番に学んでいきます。

ここでのポイントは一つだけです。

演算の結果は、使われている型によって変わる

この感覚を持ったまま、
次の節へ進んでいきましょう。

ここからが、
C言語らしさが一気に見えてくる章 です 😊
次は「型」が計算結果にどう影響するのかを、
じっくり見ていきましょう。