.. index:: 
	single: 演算子; はじめに

======
演算子
======

演算子の用法を学びます。

.. index:: 
	pair: 演算子; 算術演算子


算術演算子
==========

これは算術演算子の早見表です。
ここでは変数 X=50 および、変数 Y=10 とします:

.. csv-table::
	:header: "演算子", "説明", "用例", "結果"
	:widths:       26,     33,     22,     20

	"\+",    "加算",                  "x+y",     "60"
	"\-",    "減算",                  "x-y",     "40"
	"\*",    "乗算",                  "x*y",    "500"
	"/",     "除算",                  "x/y",      "5"
	"%",     "余剰",                  "x%y",      "0"
	"++",    "インクリメント (増分)", "x++",     "51"
	``--``,  "デクリメント   (減分)", ``x--``,   "49"

.. index:: 
	pair: 演算子; 関係演算子

関係演算子
==========

これは関係演算子の早見表です。
ここでは変数 X=50 および、変数 Y=10 とします:

.. csv-table::
	:header: "演算子", "説明", "用例", "結果"
	:widths:       22,     38,     24,     16

	"=",	"等しい",				"x = y", 	"False"
	"!=",	"等しくない",			"x != y", 	"True"
	">",	"より大きい",			"x > y", 	"True"
	"<",	"より小さい",			"x < y", 	"False"
	">=",	"より大きいか等しい",	"x >= y", 	"True"
	"<=",	"より小さいか等しい",	"x <= y", 	"False"


.. index:: 
	pair: 演算子; 論理演算子

論理演算子
==========

これは論理演算子の早見表です。
ここでは変数 X=True および、変数 Y=False とします:

.. csv-table::
	:header: "演算子", "説明", "用例", "結果"
	:widths:       22,     38,     24,     16

	"and",	"論理 AND",	"x and y",	"False"
	"or",	"論理 OR",	"x or y",	"True"
	"not",	"論理 Not",	"not x",	"False"

別の記法

.. csv-table::
	:header: "演算子", "説明", "用例", "結果"
	:widths:       22,     38,     24,     16

	"&&",	"論理 AND",	"x && y",	"False"
	"||",	"論理 OR",	"x or y",	"True"
	"!",	"論理 Not",	"! x",		"False"


.. index:: 
	pair: 演算子; ビット演算子

ビット演算子
============

これはビット演算子の早見表です。
ここでは変数 X=8 および、変数 Y=2 とします:

.. csv-table::
	:header: "演算子", "説明", "用例", "結果"
	:widths:       19,     46,     21,     14

	"&",	"二進数 AND", 				"x & y",	"0"
	"\|",	"二進数 OR", 				"x \| y", 	"10"
	"^",	"二進数 XOR", 				"x ^ y", 	"10"
	"~",	"二進数による 1 の補数",	"~x",		"-9"
	"<<",	"二進数による左シフト",		"x << y",	"32"
	">>",	"二進数による右シフト",		"x >> y",	"2"


.. index:: 
	pair: 演算子; 代入演算子

代入演算子
==========

これは代入演算子の早見表です。

ここでは変数 X=8 とします:

.. csv-table::
	:header: "演算子", "説明", "用例", "結果"
	:widths:       19,     46,     21,     14

	"=",	"代入", 					"x = 10",	"x=10"
	"+=",	"加算して代入", 			"x += 5",	"x=13"
	"-=",	"減算して代入",				"x -= 3",	"x=5"
	"\*=",	"乗算して代入", 			"x \*= 2",	"x=16"
	"/=",	"除算して代入", 			"x /= 3",	"x=2.67"
	"%=",	"余剰して代入", 			"x %= 2",	"x=0"
	"<<=",	"左シフトして代入", 		"x <<= 2",	"x=32"
	">>=",	"右シフトして代入", 		"x >>= 2",	"x=2"
	"&=",	"ビット演算 AND して代入", 	"x &= 4",	"x=0"
	"\|=",	"ビット演算 OR して代入", 	"x \|= 3",	"x=11"
	"^=",	"ビット演算 XOR して代入", 	"x ^= 4",	"x=12"

.. index:: 
	pair: 演算子; そのほかの演算子

そのほかの演算子
================

.. csv-table::
	:header: "演算子", "説明"
	:widths:       30,     70

	":リテラル", 						"接頭辞 : を識別子に付けるとリテラルとして扱われます。"
	"始点:終点", 						"始点から終点までの項目から成るリストを作成します。"
	"[リストの項目]",					"リストの項目を定義します。"
	"リスト[インデックス]",				"リストの項目へアクセスします。"
	"オブジェクト.名前", 				"ドット演算子でオブジェクトのメンバへアクセスします (属性またはメソッド)。"
	"オブジェクト {ステートメント}", 	"オブジェクトの属性とメソッドへ直接的にアクセスできるステートメントを実行します。"
	"関数(仮引数,...)", 				"コンマで区切られた仮引数で関数を呼び出します。"
	"? <式>",						 	"式の表示後に改行します。"


.. index:: 
	pair: 演算子; 演算子の評価優先順位

演算子の評価優先順位
====================

これは最高優先度 (最初に評価します) 
から最低優先度までの演算子を表記したものです。


.. csv-table::
	:header: "演算子"

	". [] () {}"
	"\-  \~ :リテラル [リストの項目]"
	``++ --``
	"始点:終点"
	"\* / %"
	"\+ \-"
	"<< >>"
	"&"
	"\|  ^"
	"< > <= >="
	"= !="
	"not !"
	"and or && ||"
	"代入 \= += -= \*= /= %= >>= <<= &= ^= \|= "
	"?"

用例:

.. code-block:: ring

	See 3+5*4	# 23 を表示
