C言語の基礎(複合代入演算子)

スポンサーリンク
C言語

変数に値を代入する演算子(代入演算子)「=」は、本ブログでもこれまでに何度も扱っている。

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言語 (株)アンク著(インプレス )

コメント

タイトルとURLをコピーしました