変数に値を代入する演算子(代入演算子)「=」は、本ブログでもこれまでに何度も扱っている。
a = 1;
この例では 変数aに1を代入している。
注意点としては、数学のようにイコールの意味ではないこと。プログラム学習が進んでいくと、何度もエラー表示に出くわすことがある。その時にはこの代入演算子をイコールの意味で使っていないか(その逆も然り)確認していただきたい。基本的なルールであるが、慣れてくると見落としがちになる。
変数aにaに1を加えた計算結果を代入することもある。
a = a + 1;
これは、次のように書くこともできる。
a += 1;
この+=演算子を、複合代入演算子と呼ぶ。
複合代入演算子
複合代入演算子は以下の通りである。
演算子 | 使い方 | 意味 |
+= | a += b(足して代入) | a+bの結果をaに代入 |
-= | a -= b(引いて代入) | a-bの結果をaに代入 |
*= | a *= b(かけて代入) | a*bの結果をaに代入 |
/= | a /= b(割って代入) | a/bの結果をaに代入 |
%= | a %= b(余りを代入) | a%bの結果をaに代入 |
<<= | a = a << 2 | 左シフト |
>>= | a = a >> 2 | 右シフト |
&= | a = a & b | 論理積 |
^= | a = a ^ b | 排他的論理和 |
|= | a = a | b | 論理和 |
加減乗除と剰余については数学の計算方法と同じである。なお、「<<=」以下については回を改めて説明する。ここでは、加減乗除と剰余についてプログラムで確認してみよう。
まずは、変数を100で初期化する。その後、代入演算子(+=,-=,*=,/=,%=)の演算結果を表示する。
//複合代入演算子の例
#include <stdio.h>
int main(void)
{
int a = 100,b = 100,c = 100,d = 100,e = 100; /* 変数を100で初期化*/
printf("100 += 10 の結果は%dである。\n",a+=10); /*a+10の結果をaに代入*/
printf("100 -= 10 の結果は%dである。\n",b-=10); /*b-10の結果をbに代入*/
printf("100 *= 10 の結果は%dである。\n",c*=10); /*c*10の結果をcに代入*/
printf("100 /= 10 の結果は%dである。\n",d/=10); /*d/10の結果をdに代入*/
printf("100 %= 10 の結果は%dである。\n",e%=10); /*e%10の結果をeに代入 */
}
実行結果
100 += 10 の結果は110である。
100 -= 10 の結果は90である。
100 *= 10 の結果は1000である。
100 /= 10 の結果は10である。
100 %= 10 の結果は0である。
なお、複数の変数の初期化は、以下のように行う。
int a = 0, b = 0;
以下のように初期化すると、bのみに0が代入され、aは不定値となる。
int a, b = 0;
いかがであろうか。この小文でC言語に少しでも興味を持っていただけたら幸いである。
(参考文献)新・明解C言語 入門編 第2版 柴田望洋著(SBクリエイティブ)、基礎C言語 (株)アンク著(インプレス )
コメント