Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Web Analytics
Cookie Policy Terms and Conditions ブーリアン型 - Wikipedia

ブーリアン型

出典: フリー百科事典『ウィキペディア(Wikipedia)』

ブーリアン型: Boolean datatype)とは、真理値の「真 = true」と「偽 = false」という2値をとる基本データ型である。また、ブーリアンブール型論理型: Logical datatype)とも。1桁のバイナリ数値データ型(つまり1ビットのデータ型)と見ることもできる。

if文の条件式の値は、このデータ型として使われることが多い。また、各種ブール演算を行うことができ、論理積 (AND, &, *)、論理和 (OR, |, +)、排他的論理和 (xor, NEQV, ^)、同値 (EQV, =, ==)、否定 (NOT, ~, !)などの操作が可能である。これらの演算はブール代数の演算に対応している。

目次

[編集] Ada

Ada では、Boolean は Standard パッケージにあり、False および True という値をとる列挙型として定義されている。ここで、False < True である。

type Boolean is (False, True);

p : Boolean := True;
...
if p then
  ...
end if;

比較演算子(=, /=, <, <=, >, >=)は Boolean を含めた全ての列挙型に適用可能である。ブール演算子 andorxornotBoolean について定義されており、その派生型にも適用可能である。ブール演算子は Boolean の配列にも適用可能である。

[編集] ALGOL

Algol 60 にはデータ型として Boolean が定義されており、演算子も定義されている。なお、ALGOL 68 ではデータ型の名称が bool に短縮された。

[編集] C言語

C言語では、C89 にはブーリアン型が定義されていない(C99には定義されている)。ブーリアン型がない代わりに true/false は 0 かどうかで判断される。次のようなコードがあったとする。

if (my_variable) {
  printf("True!\n");
} else {
  printf("False!\n");
}

これは実際には次のコードと全く同じである。

if (my_variable != 0) {
  printf("True!\n");
} else {
  printf("False!\n");
}

つまりこれは単なる整数型にすぎない。浮動小数点数は 0 との比較がうまくいかない可能性があるため、整数型でブーリアン型を表すのが一般的である。

真偽の判定のためにブーリアンの値に true や false といった名前をつける必要性はないが、値を代入するにあたっては値の名称が必要となる。処理系に依存しない方法としては、0 と 1 を使う方法がある。代替案としては、enum キーワードで要素に名前をつける方法もある。

typedef enum _boolean { FALSE, TRUE } boolean;
...
boolean b;

しかし、実際には enum を使うことは滅多にない。代わりにプリプロセッサのマクロで 0 と 1 の別名を定義するのが一般的である。

#define FALSE 0
#define TRUE 1
...
int f = FALSE;

C99準拠の最近の処理系では、_Bool型があり、これを使ってstdbool.hというヘッダファイルで bool型が定義されている。これによってC++との互換性が得られる。

#include <stdbool.h>
bool b = false;
...
b = true;

[編集] C++

C++では、標準化の過程で booltruefalse というキーワードが導入され、基本データ型としてサポートされた。その大きさは処理系で定義される。

ISO C++ 1998の標準C++ライブラリでは、vector<bool>クラスが定義されている。メモリ使用量を最適化するため、各ブール値は1ビットに格納される。しかし、これは仕様策定上の間違いだと言われている。vector<bool>STLコンテナの要求には合致せず、C++標準化委員会とライブラリ作業グループはこれを次のバージョンで削除するか、使わないよう周知させるべきとの点で見解が一致している。

ブーリアン型を出力するコードは以下のようになる。

int i = 5;
bool myBool = (i == 5);
std::cout << "i == 5 is " << std::boolalpha << myBool << std::endl;

boolalphaはbool型の値の出力をtrueまたはfalseにするマニピュレータであり、省略すると1または0が出力される。

[編集] C#

C#では、ブーリアン型は bool 型で表され、そのサイズは1バイトである。

ブーリアン型を出力するコードは以下のようになる:

bool myBool = (i == 5);
System.Console.WriteLine(myBool ? "I = 5" : "I != 5");

[編集] FORTRAN

キーワード LOGICAL と演算子 .NOT..AND..OR. などが1950年代に導入された。これはFORTRANが標準化される以前のことである。

[編集] Java

Javaでは、ブーリアン型は boolean 型で表され、一般に1バイトで実装される(実装はJava仮想マシンに依存する)。booleanへの、あるいはbooleanからの型変換は許されない。

int i = 5;
if (i) System.out.println("i is five");

このようなコードはコンパイル時エラーとなる。ブーリアン型を出力するコードは以下のようになる。

boolean myBool = (i == 5);
System.out.println("i == 5 is " + myBool);

この出力結果は次の通り。

i == 5 is true

[編集] OCaml

OCamlbool 型を持ち、値として truefalse をとる。

# 1 = 1 ;;
- : bool = true

他の列挙型と同様、この型も値の格納場所として1ワードを使用する。

[編集] LISP

LISP には2つの特殊シンボル T と NIL があり、真理値を表している(T が true、NIL が false)。しかし、LISP処理系では NIL でないあらゆる値が true と解釈される。特殊シンボル NIL は () とも表記され、これは空のリストを意味する。つまり、空のリストは false であるが、何らかの中身のあるリストは true と解釈される。

[編集] ML

OCaml と同様 ML には bool 型があり、値として truefalse をとる。以下に例を示す。

- fun isittrue x = if x then "YES" else "NO" ;
> val isittrue = fn : bool -> string
- isittrue true;
> val it = "YES" : string
- isittrue false;
> val it = "NO" : string
- isittrue (8=8);
> val it = "YES" : string
- isittrue (7=5);
> val it = "NO" : string

[編集] Pascal

Pascalでは、Boolean は基本データ型として提供されている。以下に例を示す。

var
  value: Boolean;

...

value := True;
value := False;

if value then
begin
...
end;

[編集] Perl

Perlでは、集合型でないデータ型である数や文字列には区別がない(すべてスカラーと呼ばれる)。ブール演算では、要素を持たない集合型、空の文字列、値が 0 と等しい数値、文字列 """0"、未定義変数が "false" と解釈される。これら以外の全ての値は "true" と解釈される(例えば 0.0 とか 0E0 といった文字列は「0 だが true」となる)。

集合型の要素は、存在するかしないかを評価されることもあり[1]、全ての変数は定義されているかいないかを評価されることがある[2]。ハッシュや配列の要素で値が undef であるものは、存在しているが未定義である。存在と定義の区別は、スカラーをブーリアンのように扱う際に重要である。

Perl 5 では真理値を表す定数は組み込まれていないが、Perl 6 では存在している。

[編集] Python

Pythonには bool型があり、値として TrueFalse も定義されている。また、全てのオブジェクトをブール演算で評価可能である。以下の値は False と見なされる:

  • 数値型の 0、None、False。
  • 組み込みのコンテナ型の空のオブジェクト。例えば空の文字列、空のリスト、空のタプル。
  • 空の辞書と集合。
  • ユーザー定義オブジェクトで、特殊メソッド __nonzero__[1] または __len__ により、自身のブール値に対して制御を持つもの。

これら以外のオブジェクトは全て True と評価される。

ブール演算子や組み込みのブーリアン型は True または False を返すが、例外として "or" と "and" はオペランドの1つを返す(式を左から右に評価していき、その式のブール値を決定する最初のオペランドを返す)。

>>> class spam: pass    # spam にクラスオブジェクトを代入
... 
>>> eggs = "eggs"       # eggs に文字列オブジェクトを代入
>>> spam == eggs        # (等しいかどうかの判定)
False
>>> spam != eggs        # != と == はブール値を返す
True
>>> spam and eggs       # and はオペランドを返す。
'eggs'
>>> spam or eggs        # or もオペランドを返す。
<class __main__.spam at 0x01292660>
>>> 

[編集] Ruby

Rubyには言語機能としてブーリアン型が存在しない。ただし、truefalsenil という特殊な定数が存在する(それぞれ専用のクラスの特異インスタンス)。そしてブール演算では、falsenil 以外は全て true と評価される。例えば、空の文字列も数値の 0 も他の言語とは異なり、true と評価されるので、注意が必要である。nil は初期化されていないインスタンスやグローバル変数の値として使用される。truefalsenil は、変数への代入、関数やメソッドのリターン値、ブール式との比較対象として使用可能である。

a = 0
if (a) 
  print "true"
else
  print "false"
end 

このコードは "true" を表示する。

Ruby は純粋なオブジェクト指向プログラミング言語なので、true、false、nil もオブジェクトであり、クラスに属している。

p false.class
p true.class
p nil.class

とした場合、それぞれ "FalseClass"、"TrueClass"、"NilClass" が出力される。

[編集] Visual Basic

Visual Basic には Boolean 型があり、比較演算の結果はこの型となる。16ビットの整数として格納されるが、値は True(-1)False(0) しかない。以下に例を示す。

Dim isSmall As Boolean
isSmall = intMyNumber < 10          ' 式を評価した結果は True か False となる
If isSmall Then
   MsgBox("The number is small")
Endif
Dim hellFreezesOver As Boolean      ' Boolean 変数は False で初期化される
hellFreezesOver = False             ' あるいは、代入文を使うこともできる
Do Until hellFreezesOver
   Call CheckAndProcessUserInput()
Loop

[編集]

  1. ^ "Special method names: Basic customization" Python Language Reference.
Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu