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 + 1
は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 - 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 * 2
は4
になります。
変数に値を除算代入する
変数に値を除算代入するには「/=
」を使います。
#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 / 2
は2
になります。
変数に値を剰余算代入する
変数に値を剰余代入するには「%=
」を使います。
#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 % 2
は1
になります。
これは3
を2
で割った余りが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 & 1
は1
になります。
変数に値を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 | 1
は1
になります。
変数に値を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 ^ 1
は1
になります。
変数に値を左シフト代入する
変数に値を左シフト代入するには「<<=
」を使います。
#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 << 1
は2
になります。
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 >> 1
は1
になります。
1つ右へシフトするとその値は半分になります。
おわりに
今回はC言語の代入演算子について解説しました。
代入演算子を覚えておけばコードを短くすることもできます。
覚えておいて損はなさそうです。
🦝 < 代入してあげる
🐭 < 代入演算子はよく使われます