各種演算子


C言語には演算子が有ります。

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

演算子を複数使用するときは演算子の優先順位や結合規則をあれこれ考えてプログラムするよりも、数学と同じ考えで、先に計算して欲しいところを ( ) でくくっておきます。

ソースコード

源文件
  1|#include <stdio.h>                                                          
  2|
  3|int main(void)
  4|{
  5|  double height = 1.72, weight = 65.2;
  6|
  7|  printf("BMIは体重(kg)を身長(m)の2乗で割ったものです\n");
  8|  printf("これが25を超えると肥満です\n");
  9|  printf("例えば身長%4.2fmで体重%4.2fkgの人では\n", height, weight);
 10|  printf("BMI = %4.2f / (%4.2f * %4.2f)で計算します\n", weight, height, height);
 11|  printf("その結果は%4.1fでした\n",weight / (height * height) );
 12|  return 0;
 13|}

実行結果

BMIは体重(kg)を身長(m)の2乗で割ったものです
これが25を超えると肥満です
例えば身長1.72mで体重65.20kgの人では
BMI = 65.20 / (1.72 * 1.72)で計算します
その結果は22.0でした

「%」は比較的よく使います。これは、割り算のあまりを求める演算子です。

実は、ゲームを作るときによく乱数(ランダムな値)が必要となります。例えば、じゃんけんゲームを作るとします。コンピュータが何をだすかは、まったくでたらめであるとします。このとき0から2までの乱数(0, 1, 2)を発生させて0ならグー、1ならチョキ、2ならパーと決めておきます。これで、コンピュータの出す手を決められます。

しかし、普通C言語の関数で乱数を発生させると0からRAND_MAX(32767)までの整数が得られます。そこで、得られた乱数を x とすると(x % 3)を計算するのです。ある整数を3で割ったときのあまりは0か1か2のいずれかです。

Chapter3 @ C言語目録 @ HomeWork List @ 昭亮's Homepage