ユーニックス総合研究所

  • home
  • archives
  • c-substitution

C言語の代入演算子で変数に値を代入する方法

  • 作成日: 2022-02-08
  • 更新日: 2023-12-25
  • カテゴリ: C言語

C言語の代入演算子で変数に値を代入する方法

C言語には多数の演算子があります。
その中でも変数に値を割り当てる演算子を「代入演算子」と言います。

代入演算子にもいろいろ種類がありますが、把握しておくとプログラミングが楽になります。
この記事ではC言語の代入演算子について詳しく解説します。

関連記事

目が覚めるC言語のdo-while文の使い方【ループ処理、初心者向け】
明快!C言語のcontinue文の使い方
君はまだC言語のdefineのすべてを知らない【マクロ、プリプロセス】
プログラミングのポインタをわかりやすく解説【C言語】
コードで見るC言語とC++の7つの違い

代入演算子の構造

C言語の代入演算子は↓のような構造になっています。

変数 代入演算子 値;  

代入演算子左側に変数を書き、右側に値を書きます。
代入演算子は種類がたくさんありますが、すべてこの構造になっています。

たとえば加算代入演算子は↓のように書きます。

a += 1;  

代入演算子の一覧

C言語の代入演算子の一覧は↓になります。

演算子 意味 別の書き方
a = 1; 変数aに値1を代入 無し
a += 1; 変数aに値1を加算 a = a + 1;
a -= 1; 変数aに値1を減算 a = a - 1;
a *= 2; 変数aに値2を乗算 a = a * 2;
a /= 2; 変数aに値2を除算 a = a / 2;
a %= 2; 変数aに値2を剰余算 a = a % 2;
a &= 1; 変数aに値1をAND a = a & 1;
a |= 1; 変数aに値1をOR a = a | 1;
a ^= 1; 変数aに値1をXOR a = a ^ 1;
a <<= 1; 変数aに値1を左シフト a = a << 1;
a >>= 1; 変数aに値1を右シフト a = a >> 1;

代入演算子は通常の演算子の省略形です
たとえばa = a + 1;という演算はa += 1;という代入演算に置き換えることが可能です。
a = a - 1;という演算もa -= 1;という代入演算に置き換えられます。

このように代入演算は既存の演算のショートカットとして利用することができます。
代入演算を覚えておけばコードをシンプルにすることも可能です。

変数に値を代入する

変数に値を代入するには「=」を使います。

#include <stdio.h>  

int main(void) {  
    int a = 1;  

    printf("%d\n", a);  // 1  

    return 0;  
}  

↑の場合、int a = 1;で変数aに値1が代入されます。
変数aは値1が保存されている状態になります。
そのためprintf()で出力すると「1」と出力されます。

変数に値を加算代入する

変数に値を加算代入するには「+=」を使います。

#include <stdio.h>  

int main(void) {  
    int a = 0;  

    a += 1;  

    printf("%d\n", a);  // 1  

    return 0;  
}  

a += 1;という加算代入はa = a + 1;と同じ意味になります。
結果は変数に1が加算されてprintf()では「1」と出力されます。
0 + 11になります。

変数に値を減算代入する

変数に値を減算代入するには「-=」を使います。

#include <stdio.h>  

int main(void) {  
    int a = 0;  

    a -= 1;  

    printf("%d\n", a);  // -1  

    return 0;  
}  

a -= 1;という減算代入はa = a - 1;と同じです。
結果は変数から1が減算されてprintf()では「-1」と出力されます。
0 - 1-1になります。

変数に値を乗算代入する

変数に値を乗算代入するには「*=」を使います。

#include <stdio.h>  

int main(void) {  
    int a = 2;  

    a *= 2;  

    printf("%d\n", a);  // 4  

    return 0;  
}  

a *= 2;という乗算代入はa = a * 2;と同じです。
結果は変数に2が乗算されてprintf()では「4」と出力されます。
2 * 24になります。

変数に値を除算代入する

変数に値を除算代入するには「/=」を使います。

#include <stdio.h>  

int main(void) {  
    int a = 4;  

    a /= 2;  

    printf("%d\n", a);  // 2  

    return 0;  
}  

a /= 2;という除算代入はa = a / 2;と同じです。
結果は変数に2が除算されてprintf()では「2」と出力されます。
4 / 22になります。

変数に値を剰余算代入する

変数に値を剰余代入するには「%=」を使います。

#include <stdio.h>  

int main(void) {  
    int a = 3;  

    a %= 2;  

    printf("%d\n", a);  // 1  

    return 0;  
}  

a %= 2;という剰余代入はa = a % 2;と同じです。
結果は変数に2が剰余算されてprintf()では「1」と出力されます。
3 % 21になります。
これは32で割った余りが1になるということです。

変数に値をAND代入する

変数に値をAND代入するには「&=」を使います。

#include <stdio.h>  

int main(void) {  
    int a = 1;  

    a &= 1;  

    printf("%d\n", a);  // 1  

    return 0;  
}  

a &= 2;というAND代入はa = a & 1;と同じです。
結果は変数に1がANDされてprintf()では「1」と出力されます。
ANDは両方のビットが立っている場合に真になります。
よって1 & 11になります。

変数に値をOR代入する

変数に値をOR代入するには「|=」を使います。

#include <stdio.h>  

int main(void) {  
    int a = 0;  

    a |= 1;  

    printf("%d\n", a);  // 1  

    return 0;  
}  

a |= 1;というOR代入はa = a | 1;と同じです。
結果は変数に1がORされてprintf()では「1」と出力されます。
ORはどちらかのビットが立っている時に真になります。
よって0 | 11になります。

変数に値をXOR代入する

変数に値をXOR代入するには「^=」を使います。

#include <stdio.h>  

int main(void) {  
    int a = 0;  

    a ^= 1;  

    printf("%d\n", a);  // 1  

    return 0;  
}  

a ^= 1;というXOR代入はa = a ^ 1;と同じです。
結果は変数に1がXORされてprintf()では「1」と出力されます。
XORは両方のビットが異なる場合に真になります。
よって0 ^ 11になります。

変数に値を左シフト代入する

変数に値を左シフト代入するには「<<=」を使います。

#include <stdio.h>  

int main(void) {  
    int a = 1;  

    a <<= 1;  

    printf("%d\n", a);  // 2  

    return 0;  
}  

a <<= 1;という左シフト代入はa = a << 1;と同じです。
結果は変数に1が左シフトされてprintf()では「2」と出力されます。
左シフトはビット列を左にシフト(移動)させます。
よって1 << 12になります。
1つ左へシフトするとその値は倍になります。

変数に値を右シフト代入する

変数に値を右シフト代入するには「>>=」を使います。

#include <stdio.h>  

int main(void) {  
    int a = 2;  

    a >>= 1;  

    printf("%d\n", a);  // 1  

    return 0;  
}  

a >>= 1;という右シフト代入はa = a >> 1;と同じです。
結果は変数に1が右シフトされてprintf()では「1」と出力されます。
右シフトはビット列を右にシフト(移動)させます。
よって2 >> 11になります。
1つ右へシフトするとその値は半分になります。

おわりに

今回はC言語の代入演算子について解説しました。
代入演算子を覚えておけばコードを短くすることもできます。
覚えておいて損はなさそうです。

🦝 < 代入してあげる

🐭 < 代入演算子はよく使われます