3-4 演算子と計算順位

この記事は約3分で読めます。

3-1では四則計算及び余りを計算する演算子を紹介しましたが、ほかにもC言語には多くの演算子が用意されているので、それを紹介します。

なお、演算子のことをオペレーターとも呼びます。x+yという式があった場合+は演算子(オペレーター)ですがx,yをオペランドといいます。以下、x,yはオペランドとします。

四則計算に関する演算子

演算子意味
+xxの1倍
-xxの-1倍
x+y
x-y
x*y
x/y
x%y余り
x++x=x+1
x––x=x-1
++xx=x+1
x––x=x-1
x+=yx=x+y
x-=yx=x-y
x*=yx=x*y
x/=yx=x/y
x%=yx=x%y
x=yxにyを代入

これ以外にもまだまだありますが、それらは後の章で紹介します。

上記の演算子表について、=を含む演算子がいくつかあります(+=など)。それらは複合代入演算子といい、演算結果が左オペランドに代入されます。

++、––はそれぞれインクリメント演算子、デクリメント演算子と呼ばれます。これらの演算子は、++x、x++のように2通りの書き方があります。前者を前置インクリメント演算子、後者を耕地インクリメント演算子といいます。オペランドの前にある前置演算子は評価すると+1した後の値となります。反対に、オペランドの後の後置演算子は評価すると+1する前の値となります。––についても同様です。

#include <stdio.h>

int main(void) {
	int a=10,b=10;
	printf("a=%d,b=%d\n",a,b);
	printf("a++=%d,++b=%d\n",a++,++b);
	printf("a=%d,b=%d\n",a,b);
	a=10; b=10;
	printf("\na=%d,b=%d\n",a,b);
	printf("a--=%d,--b=%d\n",a--,--b);
	printf("a=%d,b=%d\n",a,b);
	
	return 0;
}

実行結果

a=10,b=10
a++=10,++b=11
a=11,b=11

a=10,b=10
a--=10,--b=9
a=9,b=9

aは加減算の処理の前の値が、bは処理の後の値が表示されています。

また、数学で積と商の計算を和と差の計算より優先的に行うという決まりがありますが、C言語にも同様のルールがあります。また、カッコ内を優先して計算するというルールも同じです。

#include <stdio.h>
int main(void){
	int a=1,b=2,c;
	c=a+b*2;
	printf("c=%d\n",c);
	c=(a+b)*2;
	printf("c=%d\n",c);
	return 0;
}

実行結果

c=5
c=6

まとめ

演算子には計算順序がある。

四則演算の場合数学のように*/が先に計算される。

演算順序を明示的に変えたい場合は括弧を使う。

コメント

タイトルとURLをコピーしました