次は演算子の話です もちろん,+とか-とか*とか/も演算子です.
単項演算子,二項演算子,三項演算子
これは良いですね.まぁ,「*」が掛け算で「/」が割り算であることくらいです.
整数型の場合,割り算をすると小数点以下は切り捨てられます.
「%」は余りを求める演算子です.
a = 10 % 3;
とすると,10/3の余りである1がaに入ります.
代入演算子は,変数の内容を変化させます.
x+=2 は x=x+2 と同じです.
*= /= &= とかたくさんありますが.
x=x+1 は x+=1 とは書かずに普通は x++ と書きます.
C言語では,0を「偽」,0以外を「真」として扱います.
A && B
AとBがともに「真」である場合のみ,結果も「真」となります.
if (x==1 && y==2) {
// x==1 かつ y==2 のときに実行される
}
A || B
AとBのどちらかが「真」であれば結果は「真」となります. AとBがともに「偽」である場合のみ,結果は「偽」となります.
if (x==1 || y==2) {
// x==1 または y==2 のときに実行される
}
階乗を求める演算子ではありません.
!A
Aが「偽」ならば「真」,「真」ならば「偽」になります.
if (!(x>1)) {
// x>1 が成り立たないときに実行される
}
これは,
if (x<=1) {
// x>1 が成り立たない(つまりx≦1)ときに実行される
}
とも書けますね.
この辺から難しくなってきます.
整数型のデータは,0や1が並んだビット列とみなせます. そのビット列を操作するのがビット演算です.
ビットごとにANDを取ります.
コンピュータのCPU内部では,全ての計算をこのような演算の組み合わせで行っています.
あまり使いませんが,ifやswitchを書くほどのことでは無いときには良く使います.
さらに使われないものとして,順次演算子があります. 左の式から計算して,結果は右の式の値になります.
単純な例をあげるなら,whileの条件式に以下のように書いた場合です.
while (i++,i<10) { }
というwhile文では,i++を計算して,その後にi<10を評価した結果をwhileの条件として使えます. まぁ,こういう場合は,
while (++i<10) { }
と書くか,素直にfor文を使いましょう.
普通の数学と同じように,演算子には優先順位があります(例えば足し算より掛け算を先にやるとか).
下に行くほど優先順位は低くなります.
ビット演算や論理演算が分かって無いとつらいです.
いまどきビットの操作なんかしないよとか思う人もいるかもしれませんが, 少なくともマイコン上のプログラムでは必須です.