算術演算子(教科書 p.107)については、今更説明するまでもないであろう。この中で、剰
余
2(
%)はかなり便利である。
11%4
の演算結果は、
3である。覚えておくと良い。
これらの演算は、主に論理演算に使われる
3。論理が正しい(真 True)か誤り(偽 False)と
いう演算である。演算の結果は、真か偽のいずれかである。真の場合が 1 で、偽の場合
が 0 である。
算術演算子の
+ は2つのデータの加算を行い、その和を返す。
5+8 が
13
になるようにである。関係演算子(p.108)も同じで、2つのデータの演算を行い値を返す。
関係演算子が返す値は、
0 か
1 である。たとえば、
10<20の演算結果は
1 、
20>10は
0になる。もちろん、演算を行う2つの数値は、実数でも良
い。関係演算子は、大小の比較を行ってその判定をしていると考える。難しいことは、
なにもない。
- [練習1]
- 以下に示すそれぞれの a の値を計算し、結果を表示す
るプログラムを作成せよ。4番目の演算結果については、演算
子の優先順位(p.135表8-3)が問題となる。
|
a=1+2 |
|
a=1<2 |
|
a=2>1 |
|
|
a=1+3>=2+2 |
|
a=5*((1<2)+(2<4)) |
|
|
- [練習1]
- 次の d の値をC言語のプログラムで計算せよ。なぜ
d の値がそのようになるのか考えよ。ヒント、教科書
p.34表3-1を見よ。
|
a=1122334455; |
|
b=1122334455; |
|
|
c=a+b; |
|
d=1<c; |
|
関係演算子が大小の比較を表すのに対して、等価演算子は等しいか否かを表す。
- [練習1]
- 教科書のp.108の等価演算子の表を見ながら、以下の演算結果
の値を考えよ。もし分からない場合は、プログラムを作成し
て、計算して見よ。
|
100 == 100 |
|
3 == 5 |
|
3.0 == 3 |
|
|
6 != 5 |
|
5 != 5 |
|
論理演算子は2年生の時に学習したブール代数の演算子である。ブール演算では、否定は
NOT で、論理積は AND で、論理和は OR で表す。しかし、p.109の表に示すような記号を
用いる。当然これも真理値表で書くことができて、表
1〜
3のように表す。
演算の対象が 0 の場合は偽 (0) として扱われ、1 の場合は真 (1) となる。これは簡単
でブール代数の演算そのものである。表1〜3のようにな
る。
1. 否定の演算
2. 論理積の演算
3. 論理和の演算
表 2:
論理積の演算
a |
b |
a && b |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
|
表 3:
論理和の演算
a |
b |
a || b |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
|
|
|
|
問題は、演算の対象が 0 や 1 以外の場合である。プログラマーからすれば、
コンパイラーがエラーを出すか、実行時にエラーを出して止まってくれれば良いのだが、
実際にはそうはならない。C言語の仕様では 0 と 1 以外の場合、それは真(1)
として扱うと決まっている。C言語では、
として取り扱われると覚えておく。そうすると、論理演算は表
4〜
6のようになる。
4. C言語の否定演算
5. C言語の論理積
6. C言語の論理和
表 5:
C言語の論理積
a |
b |
a && b |
0 |
0 |
0 |
0 |
0以外 |
0 |
0以外 |
0 |
0 |
0以外 |
0以外 |
1 |
|
表 6:
C言語の論理和
a |
b |
a || b |
0 |
0 |
0 |
0 |
0以外 |
1 |
0以外 |
0 |
1 |
0以外 |
0以外 |
1 |
|
|
|
|
インクリメント演算子(
++)は 1 加算し、デクリメント演算子(
-)は 1 減算す
る演算子である。教科書に書いてあるように、
a=a+1 あるいは
a=a-1の代わり
に使われる。カウンターとして使っている変数の値を変化させるときに、使われることが
多く、代入演算子(
=)を使うよりも、インクリメントやデクリメント演算子を使う方
がC言語風で格好良いのである。
- [練習1]
- リスト3の動作を確かめよ。
単純代入演算子(
=)は説明しなくても分かっていると思うだろうが、これがどうして
なかなかちゃんと理解されていないのである。単純代入演算子(
=)は数学のイコール
(
)と異なり、これは演算子である。演算子と言うことであるから、これを挟んだ変数
に対して操作をする
4。 その操作
は、左辺の式の値を右辺の変数に代入する。必ず、右辺は式
5で、右辺は変数でなくてはならない。もし、左辺と右辺が
等しいか否かの比較は等価演算子(
==)を使う。C言語では、代入演算子(
=)と等
価演算子(
==)はしっかり区別を付けなくてはならない。
複合代入演算子もよく使われる。特に += は使われることが多いので、よく覚えておか
なくてはならない。a の変数の値に b を加算する場合、a=a+bとすれば
よいが、C言語ではa+=bと書くのが普通である。前者でも問題なく実行できるが、後
者の方がC言語風で格好良いとされている。ほかの複合代入演算子も同じである。
- [練習1]
- リスト4の動作の結果を考えよ。
ホームページ:
Yamamoto's laboratory著者:
山本昌志
yamamoto masashi
平成17年5月14日