NekoC

猫でもわかるC言語の個人的なまとめ資料

View on GitHub

04_式と演算子

式(expression)とは

オペランド

一次式

式文

評価

サンプルコード


/*op01*/

#include <stdio.h>
#include <stdlib.h>

int main()
{

	int a=10, b=3;
	double c;
	int d1=10;
	double d2=2.35;

	// 10/3=0.3333...
	c = a / b;

	// 出力結果: 3.0000
	printf("int同士の計算だと結果もintになる。\n");
	printf("%d ÷ %d = %f\n", a, b, c);

	// 出力結果: 12.350000
	printf("異なる型で計算を行う時は、大きい型に合わせられる。*格上げ*\n");
	printf("%d + %f = %f\n", d1, d2, d1 + d2);

	system("pause");
	return 0;
}

出力結果


int同士の計算だと結果もintになる。
10 ÷ 3 = 3.000000
異なる型で計算を行う時は、大きい型に合わせられる。*格上げ*
10 + 2.350000 = 12.350000
続行するには何かキーを押してください . . .

各種演算子

優先順位 記号 意味 統合規則
1 () 関数呼び出し。print(…), main()等
  [] 配列
  -> 構造体メンバ参照
  . 構造体メンバ参照
  ++ 後値増分
  後値減分
2 ++ 前値増分
  前値減分
  sizeof 記憶量
  & アドレス
  * 間接参照
  + 正符号
  - 負符号
  ~ 補数(ビット反転)
  ! 否定
3 () キャスト
4 * 乗算
  / 除算
  % 剰余
5 + 加算
  - 減算
6 « ビット左シフト
  » ビット右シフト
7 < 左不等号(大きい)
  <= 等価左不等号(以上)
  > 右不等号(小さい)
  >= 等価右不等号(以下)
8 == 等価
  != 非等価
9 & ビット積
10 ^ ビット差
11 | ビット和
12 && 論理積
13 || 論理和
14 ?: 条件。a?b:cのように使う
15 = 代入
  += 加算代入
  -= 減算代入
  *= 乗算代入
  /= 除算代入
  %= 剰余代入
  «= 左シフト代入
  »= 右シフト代入
  &= ビット積代入
  ^= ビット差代入
  |= ビット和代入
16 , コンマ演算子

サンプルコード


/*operatorOrder.cpp*/

# include <stdio.h>
# include <stdlib.h>

int main()
{
	double height = 1.76, weight = 62.0;

	printf("BMIは体重(kg)を身長(m)の2乗を割ったものですが\n");
	printf("これが25を超えると肥満です\n");
	printf("例えば、身長%4.2fmで体重%4.2fkgの人では\n",height,weight);
	printf("%4.2f ÷ (%4.2f × %4.2f) で計算します。\n",weight,height,height);
	printf("結果は%4.2f でした。\n", weight / (height * height));
	system("pause");

	return 0;
}

出力結果


BMIは体重(kg)を身長(m)の2乗を割ったものですが
これが25を超えると肥満です
例えば、身長1.76mで体重62.00kgの人では
62.00 ÷ (1.76 × 1.76) で計算します。
結果は20.02 でした。
続行するには何かキーを押してください . . .

インクリメント・デクリメント演算子

sizeof演算子

サンプルコード


/*sizeOf.c*/

#include <stdio.h>
#include <stdlib.h>

int main()
{
	/*各種変数を宣言*/
	char _char = 'A';
	short _short = 50;
	int _int=10;
	unsigned int _unsignedInt = 128;
	float _float = 0.5f;
	double _double = 2568.2;
	long double _longDouble = 1.258E-25;
	size_t _size_t;

	/*各変数のサイズをsizeof演算子で計測*/

	_size_t = sizeof(_char);
	printf("size of char is %dバイト\n", _size_t);

	_size_t = sizeof(_short);
	printf("size of short is %dバイト\n", _size_t);

	_size_t = sizeof(_int);
	printf("size of int is %dバイト\n", _size_t);

	_size_t = sizeof(_unsignedInt);
	printf("size of unsigned int is %dバイト\n", _size_t);

	_size_t = sizeof(_float);
	printf("size of float is %dバイト\n", _size_t);

	_size_t = sizeof(_double);
	printf("size of double is %dバイト\n", _size_t);

	_size_t = sizeof(_longDouble);
	printf("size of long double is %dバイト\n", _size_t);

	_size_t = sizeof(_size_t);
	printf("size of size_t double is %dバイト\n", _size_t);

	system("pause");

	return 0;

}

出力結果


size of char is 1バイト
size of short is 2バイト
size of int is 4バイト
size of unsigned int is 4バイト
size of float is 4バイト
size of double is 8バイト
size of long double is 8バイト
size of size_t double is 4バイト
続行するには何かキーを押してください . . .

to be continued