このスライドの使い方

  • 画面下の「▶」で再生開始、「⏸」で一時停止

  • 画面右下の「>」で次頁へ、「<」で前頁へ

  • 青字下線の部分は、まとめプリントの穴埋め

  • 作業」のところでは、ファイルをダウンロードしてコンパイル・実行

第 2 章
「演算と型」

教科書 pp.23–41

§ 2-1「演算」

(教 pp.24–29)

作業: List 2-1 を実行する。

演算子とオペランド

(教 p.24)

演算子は「+」, 「-」, 「*」, 「/」のように、演算の働きを持った記号のこと
(教 p.221 に C 言語のすべての演算子の表)

オペランドとは、その演算の対象となる式(変数や定数など)のこと

乗除演算子と加減演算子

(教 p.25)

整数 / 整数

という演算では、 整数としての割算 (小数点以下は切捨て) の結果が得られる

整数 % 整数

では、剰余(余り)を求める

作業: まとめのプリント Q 2.1.1 をやってみる

作業: List 2-2 を実行する。

printf での「%」文字の表示

(教 p.25)

%%」と 2 つ重ねることで 「%」という文字そのものを出力することができる

なお puts 関数では「%」はそのまま出力される

複数の変換指定

(教 p.27)

変換指定(「%d」など)が複数あるときは、第 2 実引数, 第 3 実引数, … が順に対応

作業: まとめのプリント Q 2.1.2 をやってみる

作業: List 2-3 を実行する。

代入演算子

(教 p.29)

=」演算子は(単純)代入演算子

式と代入式

(教 p.29)

変数や定数、それらを演算子で結合したものは

式文

(教 p.29)

式のあとに「;」をつけて文にしたもの

§ 2-2「型」

(教 p.30)

(」〜「)

(教 p.30)

式のなかで先に演算する箇所を示すために丸括弧「(」〜「)」 を用いる
他の括弧({, }, [, ] など)は この目的には使用できない

作業: List 2-5 を実行する。
a + b を先に計算していることに注意する。)

整数型と浮動小数点型

(教 p.31)

double 型は、いわゆる実数(正確には浮動小数点数)を扱うための型

もちろん精度には限界がある(十進で 15 桁くらい)

作業: List 2-6 を実行する。
(変数 nx の違いに注意する)

型と定数

(教 p.32)

5, 10 などは整数定数、
2.718 など小数点を含むものは浮動小数点定数

整数定数は int 型、浮動小数点定数は double

double 型の演算

(教 p.33)

scanf で実数を読み込むときは「%lf」を用いる。

scanf("%lf", &fx); // キーボードから実数を fx に

作業: List 2-7 を実行する。

変換指定の使い分け

(教 p.33)

以下の表くらいは、暗記しておくこと

  int  double
printf %d %f
scanf %d %lf   

注: %lf」は “誤り”と考えるべき
(Java 言語の printf でも「%lf」はエラーになる。)

あまりにも間違える人が多いので C では「%lf」も許容されるようになったという黒歴史がある。しかし本来は「%f」である。

型と演算

(教 p.34)

実数 / 実数

では切捨ては行わず、通常の割算が行われる

intdouble が混じっている場合、

整数 / 実数
実数 / 整数

も、暗黙の型変換が行われてdouble 型同士の演算となる

作業: List 2-8 を実行する。

キャスト (cast)

(教 p.36)

作業: List 2-9 , List 2-10 を実行する。

キャストとは明示的に型変換すること

( 型 ) 式

で、「式」の値を「型」としての値に変換する


  int na, nb;
  …
  … (double)(na + nb) / 2 …

では、double 型としての割算が行われる

演算子の優先順位に注意

(教 p.221)

割算よりもキャストが優先、つまり

(double)(na + nb) / 2

((double)(na + nb)) / 2

と書いてあるのと同じ

double から int へのキャスト


  double x = -2.8;
  … (int)x …

は切捨て(小数部分を無視)になる

作業: まとめのプリント Q 2.2.1 をやってみる

変換指定

(教 p.38)

以下のような変換指定は必要に応じて調べる

説明 出力
桁数を揃える printf("[%3d]", 1) [  1]
桁数を揃え先頭を 0 で埋める printf("[%03d]", 1) [001]
小数点以下の桁数を指定する printf("[%.3f]", 3.1415926) [3.142]
16 進数で表示する (小文字) printf("[%x]", 127) [7f]
16 進数で表示する (大文字) printf("[%X]", 127) [7F]

作業: List 2-11 , List 2-12 を実行する。

作業: まとめのプリント Q 2.2.2 をやってみる

文法のまとめ

式 (expression) とは

以下を追加

分類 一般形 補足説明
単項演算 単項演算子 式 単項演算子は +, -, &, … など
二項演算 式 二項演算子 式 二項演算子は +, -, *, /, =, … など
かっこ () 演算の順番を指定するため、
丸括弧で囲んだもの (教 p.30)
浮動小数点数
リテラル
3.14, 2.0, 6.02e23, 6.6626e-34 など
(教 p.32)
キャスト () 明示的な型変換 (教 p.36)

文 (statement) とは

これまでのところ、

分類 一般形 補足説明
式文 ; 式は通常、代入式か関数呼出し(教 p.29)

第 2 章・終