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

C言語演算子完全ガイド:算術・関係・論理・ビット演算子

C言語プログラミング演算子

このチュートリアルでは、実例を通じてCプログラミングのさまざまな演算子について学びます。

動画: C言語の算術演算子

演算子は値や変数に対して演算を行う記号です。例:+は加算を行う演算子です。

C言語にはさまざまな演算を実行するための幅広い演算子があります。


C言語算術演算子

算術演算子は、数値(定数と変数)に対して加算、減算、乗算、除算などの数学的演算を行います。

演算子意味
+加算または単項プラス
-減算または単項マイナス
*乗算
/除算
%除算後の余り(剰余演算)

例1: 算術演算子

// 算術演算子の動作
#include <stdio.h>
int main() {
    int a = 9, b = 4, c;
    c = a + b;
    printf("a+b = %d \n", c);
    c = a - b;
    printf("a-b = %d \n", c);
    c = a * b;
    printf("a*b = %d \n", c);
    c = a / b;
    printf("a/b = %d \n", c);
    c = a % b;
    printf("aをbで割った余り = %d \n", c);
    return 0;
}

出力

a+b = 13
a-b = 5
a*b = 36
a/b = 2
aをbで割った余り = 1

+、-、*は期待通り加算、減算、乗算を計算します。

通常の計算では9/4 = 2.25ですが、プログラムの出力は2です。

これは変数aとbが両方とも整数だからです。したがって出力も整数になります。コンパイラは小数点以下を切り捨て、2.25ではなく2を表示します。

剰余演算子%は余りを計算します。a=9をb=4で割ると余りは1です。%演算子は整数でのみ使用できます。

a = 5.0、b = 2.0、c = 5、d = 2とすると:

// いずれかのオペランドが浮動小数点数
a/b = 2.5
a/d = 2.5
c/b = 2.5
// 両オペランドが整数
c/d = 2

C言語インクリメントとデクリメント演算子

Cプログラミングには、オペランド(定数または変数)の値を1変更するインクリメント++とデクリメント--の2つの演算子があります。

インクリメント++は値を1増やし、デクリメント--は値を1減らします。これらは単項演算子で、単一のオペランドのみで動作します。

例2: インクリメントとデクリメント演算子

// インクリメントとデクリメント演算子の動作
#include <stdio.h>
int main() {
    int a = 10, b = 100;
    float c = 10.5, d = 100.5;
    printf("++a = %d \n", ++a);
    printf("--b = %d \n", --b);
    printf("++c = %f \n", ++c);
    printf("--d = %f \n", --d);
    return 0;
}

出力

++a = 11
--b = 99
++c = 11.500000
--d = 99.500000

ここでは++と--を前置として使用しています。これらは後置としてa++やa--のように使うこともできます。後置での動作については別ページで学習できます。


C言語代入演算子

代入演算子は変数に値を代入するために使われます。最も一般的なのは=です。

演算子例同じ意味
=a = ba = b
+=a += ba = a+b
-=a -= ba = a-b
*=a *= ba = a*b
/=a /= ba = a/b
%=a %= ba = a%b

例3: 代入演算子

// 代入演算子の動作
#include <stdio.h>
int main() {
    int a = 5, c;
    c = a;      // cは5
    printf("c = %d\n", c);
    c += a;     // cは10
    printf("c = %d\n", c);
    c -= a;     // cは5
    printf("c = %d\n", c);
    c *= a;     // cは25
    printf("c = %d\n", c);
    c /= a;     // cは5
    printf("c = %d\n", c);
    c %= a;     // c = 0
    printf("c = %d\n", c);
    return 0;
}

出力

c = 5
c = 10
c = 5
c = 25
c = 5
c = 0

C言語関係演算子

関係演算子は2つのオペランド間の関係をチェックします。関係が真なら1、偽なら0を返します。

関係演算子は意思決定とループで使用されます。

演算子意味例
==等しい5 == 3は0と評価
>より大きい5 > 3は1と評価
<より小さい5 < 3は0と評価
!=等しくない5 != 3は1と評価
>=以上5 >= 3は1と評価
<=以下5 <= 3は0と評価

例4: 関係演算子

// 関係演算子の動作
#include <stdio.h>
int main() {
    int a = 5, b = 5, c = 10;
    printf("%d == %d is %d \n", a, b, a == b);
    printf("%d == %d is %d \n", a, c, a == c);
    printf("%d > %d is %d \n", a, b, a > b);
    printf("%d > %d is %d \n", a, c, a > c);
    printf("%d < %d is %d \n", a, b, a < b);
    printf("%d < %d is %d \n", a, c, a < c);
    printf("%d != %d is %d \n", a, b, a != b);
    printf("%d != %d is %d \n", a, c, a != c);
    printf("%d >= %d is %d \n", a, b, a >= b);
    printf("%d >= %d is %d \n", a, c, a >= c);
    printf("%d <= %d is %d \n", a, b, a <= b);
    printf("%d <= %d is %d \n", a, c, a <= c);
    return 0;
}

出力

5 == 5 is 1
5 == 10 is 0
5 > 5 is 0
5 > 10 is 0
5 < 5 is 0
5 < 10 is 1
5 != 5 is 0
5 != 10 is 1
5 >= 5 is 1
5 >= 10 is 0
5 <= 5 is 1
5 <= 10 is 1

C言語論理演算子

論理演算子を含む式は、式が真か偽かに応じて0または1を返します。論理演算子はCプログラミングでの意思決定でよく使われます。

演算子意味例
&&論理AND。すべてのオペランドが真の場合のみ真c=5, d=2なら((c==5) && (d>5))は0
||論理OR。いずれかのオペランドが真なら真c=5, d=2なら((c==5) || (d>5))は1
!論理NOT。オペランドが0の場合のみ真c=5なら!(c==5)は0

例5: 論理演算子

// 論理演算子の動作
#include <stdio.h>
int main() {
    int a = 5, b = 5, c = 10, result;
    result = (a == b) && (c > b);
    printf("(a == b) && (c > b) is %d \n", result);
    result = (a == b) && (c < b);
    printf("(a == b) && (c < b) is %d \n", result);
    result = (a == b) || (c < b);
    printf("(a == b) || (c < b) is %d \n", result);
    result = (a != b) || (c < b);
    printf("(a != b) || (c < b) is %d \n", result);
    result = !(a != b);
    printf("!(a != b) is %d \n", result);
    result = !(a == b);
    printf("!(a == b) is %d \n", result);
    return 0;
}

出力

(a == b) && (c > b) is 1
(a == b) && (c < b) is 0
(a == b) || (c < b) is 1
(a != b) || (c < b) is 0
!(a != b) is 1
!(a == b) is 0

論理演算子プログラムの説明


C言語ビット演算子

計算時、加減乗除などの数学的演算はビットレベルに変換され、処理が高速化し省電力になります。

ビット演算子はCプログラミングでビットレベル操作を行うために使われます。

演算子意味
&ビット単位AND
|ビット単位OR
^ビット単位排他的OR
~ビット単位補数
<<左シフト
>>右シフト

詳細は「C言語ビット演算子」を参照してください。

その他の演算子


カンマ演算子

カンマ演算子は関連する式を連結するために使われます。例:

int a, c = 5, d;

sizeof演算子

sizeofは、データ(定数、変数、配列、構造体など)のサイズを返す単項演算子です。

例6: sizeof演算子

#include <stdio.h>
int main() {
    int a;
    float b;
    double c;
    char d;
    printf("Size of int=%lu bytes\n", sizeof(a));
    printf("Size of float=%lu bytes\n", sizeof(b));
    printf("Size of double=%lu bytes\n", sizeof(c));
    printf("Size of char=%lu byte\n", sizeof(d));
    return 0;
}

出力

Size of int = 4 bytes
Size of float = 4 bytes
Size of double = 8 bytes
Size of char = 1 byte

三項演算子?:、参照演算子&、間接参照演算子*、メンバ選択演算子->については後のチュートリアルで説明します。

C言語

  1. マイクロプロセッサプログラミングの基礎
  2. C#演算子完全ガイド:C#における演算子の包括的解説
  3. C# ビット演算子とビットシフト演算子をマスターする:包括的ガイド
  4. C#名前空間完全ガイド:構成、スコープ、ベストプラクティス
  5. C++演算子完全ガイド:算術・代入・関係・論理・ビット演算子と実例
  6. C++配列を関数に渡す完全ガイド:1次元・多次元配列の実例付き
  7. C言語ユーザー定義関数の4つの実証済みパターン
  8. Cプログラミング入門:初心者向け包括チュートリアル
  9. Verilog演算子:合成に必須の算術・制御演算子
  10. Python 演算子完全マスター: 包括的ガイド
  11. Java演算子をマスター:種類、構文、実践例