情報処理のWeb教科書―IPA情報処理試験対策のお供に!
C言語の演算子についてまとめています。優先順位やノットイコール、アロー演算子、サンプルプログラムでは四則演算アプリなども紹介しています。
この記事の目次です。
1. C言語の演算子とは
2. 等価演算子(イコール、ノットイコール)
3. 代入演算子
4. 算術演算子
5. 四則演算を行うアプリ
6. アロー演算子
7. C言語の演算子の種類とその優先順位
はじめに、C言語の演算子とは何かについて簡単に説明していきます。
演算子(operator)とは、2=1+1のような計算式がある場合、=と+のような記号のこといいます。
C言語には、等価演算子(イコール、ノットイコール)、算術演算子、論理演算子、条件演算子、比較演算子、ビット演算子、べき乗の演算子、余りの演算子などの演算子が使用できます。
以下の章では、等価演算子(イコール、ノットイコール)や代入演算子、算術演算子、アロー演算子など、主な演算子をピックアップして解説し、最後にすべての演算子の一覧をまとめています。
C言語のノット(not)イコールの記号は「!=」です。C言語の等価演算子(イコールとノットイコール)の使用方法について解説しています。
C言語の代入演算子(=)の使用方法について見ていきます。
代入演算子(=)を使用して、値を変数に代入(設定)することができます。
ソースフォルダに以下のサンプルコードを記述したテキストファイルを作成します。
//ファイル名:sample.c
#include <stdio.h>
int main(void) {
int i = 0;
printf("%d\n", i);
i = 1;
printf("%d\n", i);
return 0;
}
サンプルコードでは、iという整数(int)型の変数に 0、1という数を順番に設定(代入)して出力しています。
printf関数にカンマ区切りで引数を2つしていしており、1つ目に%dを設定し、2つ目の引数で指定した変数iの値が出力されるようにしています。
コマンドプロンプトでソースファイルを保存したフォルダに移動しgccコマンドを実行してコンパイルします。
>cd test
>gcc sample.c
a.exeというファイルができたフォルダにコマンドプロンプトで移動し、 a.exeとコマンドラインに入力すると0と1の数字が改行されて出力されます。
>a.exe
0
1
算術演算子を使用して、加減乗除の計算を行うことができます。
このページでは、C言語の加算演算子(+)の使用方法について説明しています。
加算演算子(+)を使用して、加算(足し算)を行うことができます。
ソースフォルダに以下のサンプルコードを記述したテキストファイルを作成します。
//ファイル名:sample.c
#include <stdio.h>
int main(void) {
printf("加算)1 + 2 は %d\n", 1 + 2);
return 0;
}
コマンドプロンプトでソースファイルを保存したフォルダに移動しgccコマンドを実行してコンパイルします。
>cd test
>gcc sample.c
a.exeというファイルができたフォルダにコマンドプロンプトで移動し、a.exeとコマンドラインに入力します。
>a.exe
加算)1 + 2 は 3
C言語の減算演算子(-)の使用方法について説明しています。
減算演算子(-)を使用して、減算(引き算)を行うことができます。
ソースフォルダに以下のサンプルコードを記述したテキストファイルを作成します。
//ファイル名:sample.c
#include <stdio.h>
int main(void) {
printf("減算)3 - 2 は %d\n", 3 - 2);
return 0;
}
コマンドプロンプトでソースファイルを保存したフォルダに移動しgccコマンドを実行してコンパイルします。
>cd test
>gcc sample.c
a.exeというファイルができたフォルダにコマンドプロンプトで移動し、 a.exeとコマンドラインに入力します。
>a.exe
減算)3 - 2 は 1
C言語の乗算演算子(*)の使用方法について説明しています。
乗算演算子(*)を使用して、乗算(掛け算)を行うことができます。
ソースフォルダに以下のサンプルコードを記述したテキストファイルを作成します。
//ファイル名:sample.c
#include <stdio.h>
int main(void) {
printf("乗算)3 × 2 は %d\n", 3 * 2);
return 0;
}
コマンドプロンプトでソースファイルを保存したフォルダに移動しgccコマンドを実行してコンパイルします。
>cd test
>gcc sample.c
a.exeというファイルができたフォルダにコマンドプロンプトで移動し、 a.exeとコマンドラインに入力します。
>a.exe
乗算)3 × 2 は 6
C言語の除算演算子(/)の使用方法について説明しています。
除算演算子(/)を使用して、除算(割り算)を行うことができます。
ソースフォルダに以下のサンプルコードを記述したテキストファイルを作成します。
//ファイル名:sample.c
#include <stdio.h>
int main(void) {
printf("除算)7 ÷ 2 は %d\n", 7 / 2);
return 0;
}
コマンドプロンプトでソースファイルを保存したフォルダに移動しgccコマンドを実行してコンパイルします。
>cd test
>gcc sample.c
a.exeというファイルができたフォルダにコマンドプロンプトで移動し、 a.exeとコマンドラインに入力します。
>a.exe
除算)7 ÷ 2 は 3
なお、余りを計算するには除余算演算子を使用します。
C言語の除余算演算子(%)の使用方法について説明しています。
除余算演算子(%)を使用して、除余算(割り算の余りの計算)を行うことができます。
ソースフォルダに以下のサンプルコードを記述したテキストファイルを作成します。
//ファイル名:sample.c
#include <stdio.h>
int main(void) {
printf("除余算)7 ÷ 2 の余りは %d\n", 7 % 2);
return 0;
}
コマンドプロンプトでソースファイルを保存したフォルダに移動しgccコマンドを実行してコンパイルします。
>cd test
>gcc sample.c
a.exeというファイルができたフォルダにコマンドプロンプトで移動し、 a.exeとコマンドラインに入力します。
>a.exe
除余算)7 ÷ 2 の余りは 1
なお、余りを計算するには除余算演算子を使用します。
簡単な四則演算を行うアプリケーションの例です。
ソースフォルダに以下のサンプルコードを記述したテキストファイル(mycalc.c)を作成します。
#include <stdio.h> int checkArgs(int argc, char **argv); int covert2num(char c); int main(int argc, char **argv) { int i; int a,b; if (checkArgs(argc, argv) != 0) { printf("引数を指定してください。例)mycalc 1 + 1\n"); return 1; } a = covert2num(argv[1][0]); if (a == -1) { printf("角数字1桁で指定してください。\n"); return 1; } b = covert2num(argv[3][0]); if (b == -1) { printf("半角数字1桁で指定してください。\n"); return 1; } switch (argv[2][0]) { case '+': printf("%d\n", a+b); break; case '-': printf("%d\n", a-b); break; case 46: //「.」は正規表現のため文字コード指定 printf("%d\n", a*b); break; case '/': printf("%d\n", a/b); break; default: printf("加算「+」、減算「-」、乗算「.」、除算「/」で指定してください。%d\n", argv[2][0]); return 1; } return 0; } int checkArgs(int argc, char **argv) { int i; if (argc != 4) { return 1; } return 0; } int covert2num(char c) { switch(c) { case '0': return 0; case '1': return 1; case '2': return 2; case '3': return 3; case '4': return 4; case '5': return 5; case '6': return 6; case '7': return 7; case '8': return 8; case '9': return 9; } return -1; }
コマンドプロンプトでソースファイルを保存したフォルダに移動しgccコマンドを実行してコンパイルします。 オプションoを指定して実行形式ファイル名をmycalcにします。
>cd test
>gcc -o mycalc mycalc.c
mycalc.exeができたフォルダにコマンドプロンプトで移動し、 以下のように実行します。
加算は「+」を指定して行います。
mycalc 1 + 1
減算は「-」を指定して行います。
mycalc 2 - 1
コマンドプロンプトで「*」は使えないので、乗算は「.」を指定して行います。
mycalc 2 . 2
除算は「/」を指定して行います。
mycalc 4 / 2
構造体のメンバへのアクセスには、「.」、ドット演算子を使用しますが、構造体のデータを指し示すポインタについては、ドットではなくて、「->」、アロー演算子を使用します。 C言語の構造体とポインターについて補足しながら、C言語のアロー演算子について解説しています。
以下にC言語の演算子の種類を優先順位別にまとめています。
関数呼び出しの括弧やアロー演算子など、C言語の優先順位 1位 の演算子です。
演算子 | 記号 |
---|---|
関数呼出し | () |
配列添字 | [] |
ドット(メンバ参照) | . |
アロー(メンバ間接参照) | -> |
後置インクリメント | ++ |
後置デクリメント | -- |
四則演算や前置インクリメントなど、C言語の優先順位 2位 の演算子です。
演算子 | 記号 |
---|---|
論理否定 | ! |
補数 | ~ |
単項+ | + |
単項- | - |
sizeof | sizeof |
前置インクリメント | ++ |
前置デクリメント | -- |
アドレス | & |
間接参照 | * |
C言語の優先順位 3位 の演算子はキャスト演算子です。
演算子 | 記号 |
---|---|
キャスト | () |
割り算、掛け算の乗除記号などC言語の優先順位 4位 の演算子です。
演算子 | 記号 |
---|---|
剰余 | % |
乗算 | * |
除算 | / |
足し算、引き算の記号はC言語の優先順位 5位 の演算子です。
演算子 | 記号 |
---|---|
加算 | + |
減算 | - |
シフト演算はC言語の優先順位 6位 の演算子です。
演算子 | 記号 |
---|---|
左シフト | << |
右シフト | >> |
大小比較の演算子はC言語の優先順位 7位 の演算子です。
演算子 | 記号 |
---|---|
より大きい | > |
以上 | >= |
未満 | < |
以下 | <= |
同じかどうかの比較の演算子はC言語の優先順位 8位 の演算子です。
演算子 | 記号 |
---|---|
等価 | == |
非等価(ノットイコール) | != |
ビット論理積はC言語の優先順位 9位 の演算子です。
演算子 | 記号 |
---|---|
ビット論理積 | & |
ビット排他的論理和はC言語の優先順位 10位 の演算子です。
演算子 | 記号 |
---|---|
ビット排他的論理和 | ^ |
ビット論理和はC言語の優先順位 11位 の演算子です。
演算子 | 記号 |
---|---|
ビット論理和 | | |
ビットではない論理積はC言語の優先順位 12位 の演算子です。
演算子 | 記号 |
---|---|
論理積 | && |
ビットではない論理和はC言語の優先順位 13位 の演算子です。
演算子 | 記号 |
---|---|
論理和 | || |
条件演算子はC言語の優先順位 14位 の演算子です。
演算子 | 記号 |
---|---|
条件演算子 | ?: |
代入関連の演算子はC言語の優先順位 15位 の演算子です。
演算子 | 記号 |
---|---|
単純代入 | = |
加算代入 | += |
減算代入 | -= |
乗算代入 | *= |
除算代入 | /= |
剰余代入 | %= |
左シフト代入 | <<= |
右シフト代入 | >>= |
ビット積代入 | &= |
ビット排他的論理和代入 | ^= |
ビット和代入 | |= |
順次(コンマ)演算子はC言語の優先順位 16位 の演算子です。
演算子 | 記号 |
---|---|
順次(コンマ) | , |
C言語のプログラムの書き方から、for文、if文なのど構文、フローチャートの書き方など、C言語プログラミング入門レベルの内容を、簡単なプログラムなら自由に作成できるレベルを目指して、初歩的なC言語の基本文法についてみていきます。
Windowsでも使えるフリーソフトのgccコンパイラで学ぶC言語入門用のオリジナルテキストをまとめています。
プログラミング作法などプログラミングについてまとめています。Python、C言語、流れ図などプログラミングのオリジナル入門テキスト問形でまとめています。
Copyright (C) 2010-2023 情報処理のWeb教科書. All Rights Reserved. Loarding…