式は通常、オペランドと演算子で構成されます。
算術演算子と式
C 言語の基本的な算術演算子は、+、-、*、/、% (モジュロ)です。これらは両方とも二項演算子であり、両側に 2 つのオペランドが必要です。1+2など。
#include<stdio.h>
int main()
{
int a = 9;
int b = 7;
printf("结果等于:%d\n", a + b);
printf("结果等于:%d\n", a - b);
printf("结果等于:%d\n", a * b);
printf("结果等于:%d\n", a / b);
return 0;
}
**算術式:** 算術演算子と括弧は、オペランドを接続するために使用されます。
インクリメント演算子とデクリメント演算子
これらは、i の値を 1 つ増やす i++ や、i の値を 1 つ減らす i– などの単項演算子です。
- +i と –i は、使用する前に i の値に 1 を加算または減算することを意味します。
- i++ および i– は、i を使用した後に i の値に 1 を加算または減算することを指します。
代入演算子
= は単純な代入演算子です。型変換を実行できます。型変換とは、代入演算子の両側のデータ型が矛盾する場合に型変換を使用する必要があることを意味します。
また、システムによる自動型変換と
強制型変換の2種類に分けられます。
実数データを整数変数に代入する場合、実数の小数部分を破棄する必要があります。たとえば、a が整数変数の場合、「a=1.23」を実行した結果は a=1 になります。
整数データを単精度変数または倍精度変数に割り当てる場合、値は変更されませんが、浮動小数点数として変数に格納されます。たとえば、b は単精度変数なので、b に 10 を代入する (b=10) 場合は、まず 10 を 10.00000 に変換してから、それを b に格納する必要があります。c が倍精度変数で、c に 10 を代入する場合、つまり c=10 の場合、まず 10 を 10.00000000000000 に変換し、それを倍精度浮動小数点数として c に格納します。
キャスト演算子の一般的な形式は次のとおりです: (型名) (式)。例えば
int a = 9;
int b = 7;
(float)(a / b);
整数 ab を浮動小数点数に強制します。
複合演算子
代入演算子 = の前に他の演算子を追加すると、複合代入演算子を形成できます。すべての二項演算子を代入演算子と組み合わせて、複合代入演算子を形成できます。C 言語では、+=、-=、×=、/=、%=、<<=、>>=、&=、∧=、|= の 10 個の複合代入演算子を使用できると規定されています。最後の 5 つは、ビット演算に関連する複合代入演算子です。
a+=5、a=a+5 と同等。
関係演算子
関係演算子 <、<=、>、>= の優先順位は同じです。==、! = 優先度は同じです。ただし、最初の 4 つの優先事項は最後の 2 つよりも優先されます。
算術演算子は関係演算子よりも優先されます。
関係演算子は代入演算子よりも優先されます。
関係演算子は、2 つの値を比較するためによく使用されます。
論理演算子
&&: 論理 AND 演算子 (他の言語の AND に相当)。
| |: 論理 OR 演算子 (他の言語の OR に相当)。
!: 論理 NOT 演算子 (他の言語の NOT に相当)。
このうち、「&&」と「| |」は二項 (要素) 演算子であり、演算子の両側に 2 つのオペランドが必要です。たとえば、(x>y)&& (a<b) のようになります。" は単一順序 (要素) 演算子で、オペランドを 1 つだけ必要とします (例: ! (a<b)。優先
順位:
! && ||、NOT、AND、OR。! が最も優先されます。
包括的な演算の優先順位)順序は、!→算術演算子→関係演算子→&&および||→代入演算子です。
ビット演算子
バイナリ ビット操作を実行することを指します。ビット単位の AND & が両方とも 1 の場合は 1、ビット単位の OR | は 1 がある限り 1、ビット単位の排他的論理和は、それらが同じであれば 0、異なる場合は 1 になります。
#include <stdio.h>
int main()
{
int a = 9;//00000000000000000000000000001001
int b = 5;//00000000000000000000000000000101
printf("%d\n", a & b);//00000000000000000000000000000001
printf("%d\n", a | b);//00000000000000000000000000001101
printf("%d\n", a ^ b);//00000000000000000000000000001100
return 0;
}
ビット単位の否定演算子「~」は、これまでのものとは異なり、数値をビット単位で否定する (0 が 1 になり、1 が 0 になる) ために使用される単項演算子です。
右シフト操作
「>>」はバイナリ ビットを移動します。算術右シフトは、元の符号ビットを正の数の場合は 0、負の数の場合は 1 で補います。左シフト演算は、数値の各ビットを特定の数だけ左にシフトするために使用されます
。演算子は「< <」です。
実際、1 ビットを左にシフトすることは元の数値を 2 で乗算することと同等であり、n ビットを左にシフトすることは 2 n を乗算することと同等ですが、制限は、オーバーフローする上位ビットに 1 がないことです。左にシフトするとき。同様に、右へのシフトは除算と等価であり、n ビット右へのシフトは 2 n で除算することと等価です。