これまで、このCプログラミングチュートリアルシリーズでは、関数、配列、変数などの基本的なことについて説明してきました。フローを続けて、このチュートリアルでは、別のそのような基本的な概念である演算子について説明します。
Cプログラミング言語の初心者は、主に算術、リレーショナル、論理の3種類の演算子を扱います。エアスメティックオペレーターから始めましょう。
Cには、基本的に5種類の算術演算子があります。+、-、*、/、および%です。 +、-、および/は自明ですが、*は乗算を表し、%はモジュラス演算子です。気付いていない場合は、%演算子で余りを指定します。例:
a % b
ここで、%演算子は、「a」を「b」で割ったときに余りの値を取得することを確認します。これは、「a」が「b」で完全に割り切れる場合、余りがゼロになる可能性があることを意味します。これらの演算子をより明確にするための小さな例を次に示します。
#include <stdio.h>
int main()
{
int a = 10, b = 3, c =0;
c = a + b;
printf("%d\n", c);
c = a - b;
printf("%d\n", c);
c = a*b;
printf("%d\n", c);
c = a/b;
printf("%d\n", c);
c = a%b;
printf("%d\n", c);
return 0;
}
このプログラムの出力は次のとおりです。
13
7
30
3
1
ここで言及する価値があるのは、floatとdoubleを扱うときは、%演算子を使用しないことです。また、ここで使用した+演算子と-演算子は二項演算子です。つまり、2つのオペランドが必要です(たとえば、この場合は「a」と「b」)。単一のオペランドで機能する単項+および-演算子もあります。
単項演算子の動作例を次に示します。
#include <stdio.h>
int main()
{
int a = 10, b = 3, c =0;
c = -a;
printf("c = %d", c);
}
出力は次のとおりです:
c = -10
これまでに説明したすべての演算子の中で、優先順位に関しては、単項+と-がトップの座を共有し、次に*、/、%が続き、次にバイナリ+と-が続きます。
他にもいくつかの単項演算子があることに注意してください。そのうちのいくつかは、以前のチュートリアルで間接的に説明しました。リストは次のとおりです:++、-、!、&、およびsizeof。
インクリメント演算子とデクリメント演算子++および-(プレフィックス形式とポストフィックス形式の両方)については、すでに説明しました。 !適用されるものをすべて否定するNOT演算子です。たとえば、条件の結果がtrueの場合、!を適用します。これをfalseに変換し、その逆も同様です。
次に進むと、&は変数のアドレスをフェッチするために使用され(scanf()関数の引数の場合にすでに見られるように)、sizeof演算子は渡されるオペランドのサイズを示します。次のコードは、これらの演算子についてのより良いアイデアを提供するはずです。
#include <stdio.h>
int main()
{
int a = 10, b = 3, c =0, d =1, e=0, f=9;
printf("a = 10 and a++ = %d\n", a++);
printf("b = 3 and ++b = %d\n", ++b);
printf("c = 0 and c-- = %d\n", c--);
printf("d = 1 and --d = %d\n", --d);
if(!e)
{
printf("\n e is zero or FALSE and its address is: %u\n", &e);
printf("\n sizeof 'f' is: %u\n", sizeof(f));
}
return 0;
}
そして、これが出力です:
a = 10 and a++ = 10
b = 3 and ++b = 4
c = 0 and c-- = 0
d = 1 and --d = 0
e is zero or FALSE and its address is: 856178696
sizeof 'f' is: 4
次に、リレーショナル演算子と論理演算子を簡単に見てみましょう。関係演算子は次のとおりです。
> >= < <= == !=
使用方法は次のとおりです。
a > b
a >= b
a < b
a <= b
a == b
a != b
これらの演算子は、上記のように見える順に、「a」が「b」より大きい、大きい、等しい、小さい、等しい、等しい、等しくないかどうかをチェックします。最初の4つの演算子の優先順位は同じで、最後の2つよりも高くなっています。最後の2つの演算子は、等式演算子とも呼ばれることに注意してください。
そして最後に、論理演算子について説明します。基本的に2つあります:&&と||。これらの演算子はどちらも、主に条件または式を評価するために使用されます。例:
if (cond1 && cond2)
{
}
if (expr1 && expr2)
{
}
if (cond1 || cond2)
{
}
if (expr1 || expr2)
{
}
最初の2つのifステートメントの場合、実行は両方の条件が真の場合にのみブロックに入ります。一方、最後の2つのifステートメントの場合、式の条件のいずれかが真であれば、実行はブロックに入ります。
関係演算子は算術演算子よりも優先順位が低く、論理演算子の優先順位は関係演算子や等式演算子よりも低いことに注意してください。その中でも、&&は||よりも優先されます。
このチュートリアルでは、演算子の基本、演算子のしくみ、および演算子の優先順位について説明しました。ここで説明する概念をテストするために、いくつかのサンプルCプログラムを作成することをお勧めします。ご不明な点やご質問がございましたら、下のコメント欄でお知らせください。