C - 演算子
演算子は、特定の数学関数または論理関数を実行するようにコンパイラに指示する記号です。 C言語は組み込み演算子が豊富で、次のタイプの演算子を提供します-
- 算術演算子
- 関係演算子
- 論理演算子
- ビット演算子
- 代入演算子
- その他のオペレーター
この章では、各オペレーターの仕組みを調べます。
算術演算子
次の表は、C 言語でサポートされているすべての算術演算子を示しています。変数 A を想定 10 と変数 B を保持 次に 20 を保持します −
例を表示
演算子 | 説明 | 例 |
---|---|---|
+ | 2 つのオペランドを追加します。 | A + B =30 |
− | 最初のオペランドから 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 つのオペランドの値が等しいかどうかをチェックします。はいの場合、条件は true になります。 | (A ==B) は正しくありません。 |
!= | 2 つのオペランドの値が等しいかどうかをチェックします。値が等しくない場合、条件は true になります。 | (A !=B) は真です。 |
> | 左オペランドの値が右オペランドの値より大きいかどうかをチェックします。はいの場合、条件は true になります。 | (A> B) は正しくありません。 |
< | 左オペランドの値が右オペランドの値より小さいかどうかをチェックします。はいの場合、条件は true になります。 | (A |
>= | 左オペランドの値が右オペランドの値以上かどうかをチェックします。はいの場合、条件は true になります。 | (A>=B) は正しくありません。 |
<= | 左オペランドの値が右オペランドの値以下かどうかをチェックします。はいの場合、条件は true になります。 | (A <=B) は真です。 |
論理演算子
次の表は、C 言語でサポートされているすべての論理演算子を示しています。変数 A を想定 1 と変数 B を保持 0 を保持している場合 −
例を表示
演算子 | 説明 | 例 |
---|---|---|
&& | 論理 AND 演算子と呼ばれます。両方のオペランドがゼロ以外の場合、条件は true になります。 | (A &&B) は偽です。 |
|| | 論理 OR 演算子と呼ばれます。 2 つのオペランドのいずれかがゼロ以外の場合、条件は真になります。 | (A || B) は真です。 |
! | 論理 NOT 演算子と呼ばれます。オペランドの論理状態を逆にするために使用されます。条件が真の場合、論理 NOT 演算子はそれを偽にします。 | !(A &&B) は真です。 |
ビット演算子
ビット単位の演算子は、ビットに対して機能し、ビットごとの操作を実行します。 &、|、および ^ の真理値表は次のとおりです −
p | q | p &q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
バイナリ形式で 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 を保持すると仮定すると、-
例を表示
演算子 | 説明 | 例 |
---|---|---|
& | 2 項 AND 演算子は、両方のオペランドに存在する場合、ビットを結果にコピーします。 | (A &B) =12、つまり、0000 1100 |
| | バイナリ OR 演算子は、どちらかのオペランドに存在するビットをコピーします。 | (A | B) =61、つまり、0011 1101 |
^ | バイナリ XOR 演算子は、両方ではなく一方のオペランドに設定されている場合、ビットをコピーします。 | (A ^ B) =49、つまり、0011 0001 |
~ | 2 進数の 1 の補数演算子は単項であり、ビットを「反転」する効果があります。 | (~A ) =~(60)、つまり、 -0111101 |
<< | バイナリ左シフト演算子。左オペランドの値は、右オペランドで指定されたビット数だけ左に移動します。 | A <<2 =240 すなわち、1111 0000 |
>> | 二項右シフト演算子。左オペランドの値は、右オペランドで指定されたビット数だけ右に移動します。 | A>> 2 =15 つまり、0000 1111 |
代入演算子
次の表に、C 言語でサポートされている代入演算子を示します −
例を表示
演算子 | 説明 | 例 |
---|---|---|
= | 単純代入演算子。右側のオペランドから左側のオペランドに値を割り当てます | C =A + B は A + B の値を C に割り当てます |
+= | AND 代入演算子を追加します。右オペランドを左オペランドに追加し、結果を左オペランドに代入します。 | C +=A は C =C + A と同等です |
-= | 減算 AND 代入演算子。左のオペランドから右のオペランドを減算し、結果を左のオペランドに代入します。 | C -=A は C =C - A と同等です |
*= | 乗算 AND 代入演算子。右オペランドと左オペランドを乗算し、結果を左オペランドに代入します。 | C *=A は C =C * A と同等です |
/= | 除算 AND 代入演算子。左のオペランドを右のオペランドで除算し、結果を左のオペランドに代入します。 | C /=A は C =C / A と同等 |
%= | モジュラス AND 代入演算子。 2 つのオペランドを使用してモジュラスを取得し、結果を左側のオペランドに割り当てます。 | C %=A は C =C % A と同等です |
<<= | 左シフト AND 代入演算子。 | C <<=2 は C =C <<2 と同じです |
>>= | 右シフト AND 代入演算子。 | 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 に足します。
ここでは、優先順位が最も高い演算子が表の上部に表示され、最も低い演算子が下部に表示されます。式内では、優先順位の高い演算子が最初に評価されます。
例を表示
カテゴリ | 演算子 | 連想性 |
---|---|---|
後置 | () [] -> . ++ - - | 左から右 |
単項 | + - ! ~ ++ - - (タイプ)* &sizeof | 右から左 |
乗法 | * / % | 左から右 |
添加剤 | + - | 左から右 |
シフト | <<>> | 左から右 |
リレーショナル | <<=>>= | 左から右 |
平等 | ==!= | 左から右 |
ビットごとの AND | & | 左から右 |
ビット単位の XOR | ^ | 左から右 |
ビットごとの OR | | | 左から右 |
論理積 | && | 左から右 |
論理和 | || | 左から右 |
条件付き | ?: | 右から左 |
任務 | =+=-=*=/=%=>>=<<=&=^=|= | 右から左 |
コンマ | , | 左から右 |
C言語