工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C言語演算子完全ガイド:種類、機能、実例付き解説

演算子とは

演算子とは、コンパイラに特定の数学的または論理的機能を実行するよう指示する記号です。C言語は豊富な組み込み演算子を備え、以下のタイプの演算子を提供します:

この章では各演算子の働きを見ていきます。

算術演算子

以下の表はC言語がサポートするすべての算術演算子を示します。変数Aが10、変数Bが20を保持すると仮定:

演算子説明例
+2つのオペランドを加算A + B = 30
-第1オペランドから第2オペランドを減算A - B = -10
*両オペランドを乗算A * B = 200
/分子を分母で除算B / A = 2
%剰余演算子、整数除算後の余りB % A = 0
++インクリメント演算子、整数値を1増やすA++ = 11
--デクリメント演算子、整数値を1減らすA-- = 9

関係演算子

以下の表はCがサポートするすべての関係演算子を示します。変数Aが10、変数Bが20を保持すると仮定:

演算子説明例
==2つのオペランドの値が等しいかチェック。真なら条件は真(A == B) は真でない
!=2つのオペランドの値が等しくないかチェック。真なら条件は真(A != B) は真
>左オペランドの値が右オペランドより大きいかチェック。真なら条件は真(A > B) は真でない
<左オペランドの値が右オペランドより小さいかチェック。真なら条件は真(A < B) は真
>=左オペランドが右オペランド以上かチェック。真なら条件は真(A >= B) は真でない
<=左オペランドが右オペランド以下かチェック。真なら条件は真(A <= B) は真

論理演算子

以下の表はC言語がサポートするすべての論理演算子を示します。変数Aが1、変数Bが0を保持すると仮定:

演算子説明例
&&論理AND演算子。両オペランドが非ゼロなら条件は真(A && B) は偽
||論理OR演算子。いずれかのオペランドが非ゼロなら条件は真(A || B) は真
!論理NOT演算子。オペランドの論理状態を反転。真なら偽に!(A && B) は真

ビット演算子

ビット演算子はビット単位で動作し、ビットごとの演算を行います。&、|、^の真理値表:

pqp & qp | qp ^ q
00000
01011
11110
10011

A = 60、B = 13と仮定すると、二進数では:

A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011

Cがサポートするビット演算子:変数'A'が60、変数'B'が13を保持すると仮定:

演算子説明例
&バイナリAND演算子。ビットが両オペランドに存在する場合、結果にコピー(A & B) = 12, つまり 0000 1100
|バイナリOR演算子。ビットがいずれかのオペランドに存在する場合、コピー(A | B) = 61, つまり 0011 1101
^バイナリXOR演算子。ビットが一方のオペランドにのみセットされている場合、コピー(A ^ B) = 49, つまり 0011 0001
~バイナリ1の補数演算子。単項でビットを「反転」させる効果(~A) = ~(60), つまり -0111101
<<バイナリ左シフト演算子。左オペランドの値を右オペランドで指定されたビット数だけ左に移動A << 2 = 240, つまり 1111 0000
>>バイナリ右シフト演算子。左オペランドの値を右オペランドで指定されたビット数だけ右に移動A >> 2 = 15, つまり 0000 1111

代入演算子

C言語がサポートする代入演算子:

演算子説明例
=単純代入演算子。右側オペランドの値を左側オペランドに代入C = A + B は A + B の値を C に代入
+=加算代入演算子。右オペランドを左オペランドに加え、結果を左オペランドに代入C += A は C = C + A と等価
-=減算代入演算子。右オペランドを左オペランドから引き、結果を左オペランドに代入C -= A は C = C - A と等価
*=乗算代入演算子。右オペランドを左オペランドに掛け、結果を左オペランドに代入C *= A は C = C * A と等価
/=除算代入演算子。左オペランドを右オペランドで割り、結果を左オペランドに代入C /= A は C = C / A と等価
%=剰余代入演算子。2つのオペランドで剰余を取り、結果を左オペランドに代入C %= A は C = C % A と等価
<<=左シフト代入演算子C <<= 2 は C = C << 2 と同じ
>>=右シフト代入演算子C >>= 2 は C = C >> 2 と同じ
&=ビット単位AND代入演算子C &= 2 は C = C & 2 と同じ
^=ビット単位排他的OR代入演算子C ^= 2 は C = C ^ 2 と同じ
|=ビット単位包括的OR代入演算子C |= 2 は C = C | 2 と同じ

その他の演算子:sizeof と 三項演算子

上記以外にも、sizeofと? :など、C言語がサポートする重要な演算子があります:

演算子説明例
sizeof()変数のサイズを返すsizeof(a)でaが整数なら4を返す
&変数のアドレスを返す&a; 変数の実際のアドレスを返す
*変数へのポインタ*a;
? :条件式条件が真 ? 値X : それ以外 値Y

C言語における演算子の優先順位

演算子の優先順位は、式内の項のグループ化を決定し、式の評価方法を決めます。特定の演算子は他より高い優先順位を持ちます。例えば、乗算演算子は加算演算子より高い優先順位です。

例:x = 7 + 3 * 2; ここでxには20ではなく13が代入されます。演算子*が+より高い優先順位を持つため、まず3*2が計算され、その後7が加算されるからです。

ここでは、最も高い優先順位の演算子が表の上部に、最も低いものが下部に現れます。式の中で、優先順位の高い演算子が最初に評価されます。

カテゴリ演算子結合規則
後置() [] -> . ++ --左から右
単項+ - ! ~ ++ -- (type)* & sizeof右から左
乗算* / %左から右
加算+ -左から右
シフト<< >>左から右
関係< <= > >=左から右
等価== !=左から右
ビットAND&左から右
ビットXOR^左から右
ビットOR|左から右
論理AND&&左から右
論理OR||左から右
条件?:右から左
代入= += -= *= /= %= >>= <<= &= ^= |=右から左
カンマ,左から右

C言語

  1. C#演算子完全ガイド:C#における演算子の包括的解説
  2. C# ビット演算子とビットシフト演算子をマスターする:包括的ガイド
  3. C++演算子完全ガイド:算術・代入・関係・論理・ビット演算子と実例
  4. C言語演算子完全ガイド:算術・関係・論理・ビット演算子
  5. C 言語ビット演算子マスター: AND、OR、XOR、シフト、補数
  6. C++演算子完全ガイド:種類、使い方、ベストプラクティス
  7. Verilog演算子:合成に必須の算術・制御演算子
  8. MATLAB演算子完全ガイド:算術・論理・ビット演算・集合操作
  9. Python 演算子完全マスター: 包括的ガイド
  10. Java演算子をマスター:種類、構文、実践例
  11. Java演算子完全ガイド:算術/関係/ビット/論理/代入/三項/instanceof