LINEスタンプ制作代行サービス・LINEスタンプの作り方!

お電話でのお問い合わせ:03-6869-8600

stampfactory大百科事典

ブーリアン型

ブーリアン型(ブーリアンがた、Boolean datatype)は、真理値の「真 = true」と「偽 = false」という2値をとるデータ型である。ブーリアン、ブール型、論理型(logical datatype)などともいう。2種類の値を持つ列挙型とも、2進で1ケタすなわち1ビットの整数型とも、見ることもできる。また、各種ブール演算を行うことができ、論理積 (codice_1, codice_2, codice_3)、論理和 (codice_4, codice_5, codice_6)、排他的論理和 (codice_7, codice_8, codice_9)、同値 (codice_10, codice_11, codice_12)、非同値 (codice_8, codice_14, codice_15)、否定 (codice_16, codice_17, codice_18)などの操作が可能である。これらの演算はブール代数の演算に対応している。Ada では、codice_19 は codice_20 パッケージにあり、codice_21 および codice_22 という値をとる列挙型として定義されている。ここで、codice_21 < codice_22 である。type Boolean is (False, True);p : Boolean := True;if p thenend if;比較演算子(codice_11, codice_26, codice_27, codice_28, codice_29, codice_30)は codice_19 を含めた全ての列挙型に適用可能である。ブール演算子 codice_32、codice_33、codice_34、codice_35 が codice_19 について定義されており、その派生型にも適用可能である。ブール演算子は codice_19 の配列にも適用可能である。Algol 60 にはデータ型として codice_19 が定義されており、演算子も定義されている。なお、ALGOL 68 ではデータ型の名称が codice_39 に短縮された。C言語ではブーリアン型はintで代用される(C99の codice_40型とシンボルについては後述する)。intの、値が 0 であれば偽・それ以外は真である。codice_41 のような式によって作られる、真の値の代表値は 1 である。他に、ヌルポインタや浮動小数点数 0.0 のような、定数 0 と同様の値が偽として扱われる。見やすさのために真と偽の値に名前を付けるには、列挙型を使う方法もあるが、typedef enum _boolean { FALSE, TRUE } boolean;boolean b;プリプロセッサマクロが使われていることのほうが多い。int f = FALSE;(列挙型のほうが、もしかしたらデバッガが認識してくれるかもしれない可能性がすこし高い。いずれにしてもC99では標準で定義されたものがあるし、そうでなくても多くの環境では処理系添付などのヘッダのどこかに定義があることが多く、プログラマが自分のコードでこのように定義すると混乱が起きるかもしれない)なお、こういったシンボルを定義した場合、codice_42 は代入のためのみに用い、codice_43 のように比較してはならない。codice_44 の値が0・1以外の時、C言語としての意味では真であるにもかかわらず、この判定は偽になるので混乱を招くからである。そもそも、(条件 == TRUE) という表現は無意味に冗長であり、単に (条件) と書くべきである。もし、(条件 == TRUE) と書くことが何かを明示していて良い表現だというのなら、...(((条件 == TRUE) == TRUE) == TRUE) == TRUE... は、もっと良い表現だということになる(次を参照のこと http://www.kouno.jp/home/c_faq/c9.html#2 、亀がアキレスに言ったこと)。C99ではブーリアン型を格納したりするための型が作られ、その型のためのキーワード codice_40 が追加された。さらにその型と値のためにシンボル codice_39, codice_47, codice_48 が、stdbool.h というヘッダファイルで定義される。bool b = false;b = true;条件式の型などの意味は、C99でも変わっていないので注意すること。0が偽、0以外が真というルールは、C言語文化圏で必ずしもいつもそうとは限らず、ライブラリやフレームワークによっては別のルールの場合もある。C言語文化圏で最も顕著な例はUnix等における終了ステータスの慣習であろう。正常を示す0が真、異常を示す0以外の残り全てが偽という扱いであり、シェルのコマンド行中の codice_49 や codice_50 は終了ステータスの値をそのように扱って短絡評価の動作をする。これは、異常については「何が起きたのか」といったような情報が必要なことが多いため、といったような理由がある。また、比較などで「小なり」「等しい」「大なり」の3通りの意味を返したい、といった場合には、負の値・ゼロ・正の値、とするのが自然であるため、たとえば代表例の strcmp では、文字列が等しいということを示すためにゼロが返される。これは、単に「等しいか?」という比較を連続している場合などに、そのコードが不自然に見えなくもない。if ( ! strcmp(cmd, "hello")) {} else if ( ! strcmp(cmd, "hi")) {} else if ( ! strcmp(cmd, "bye")) {C++では、標準化の過程で codice_39、codice_48、codice_47 というキーワードが導入され、基本データ型としてサポートされた。その大きさは処理系で定義される。ISO C++ 1998の標準C++ライブラリでは、codice_54クラスが定義されている。メモリ使用量を最適化するため、各ブール値は1ビットに格納される。しかし、codice_54はSTLコンテナの要求には合致しないため、これをvectorの特殊化に含めてしまったのは仕様策定上のミスだと言われている(標準化委員会ではcodice_56にするべき等の意見があった)。これは動的なビット集合として使うには非常に適しているが、codice_54という名前から連想されるようなSTLのコンテナとしての挙動はしないので、そういう意味では注意が必要である。ブーリアン型を出力するコードは以下のようになる。int i = 5;bool myBool = (i == 5);std::cout « "i == 5 is " « std::boolalpha « myBool « std::endl;boolalphaはbool型の値の出力をtrueまたはfalseにするマニピュレータであり、省略すると1または0が出力される。C#では、ブーリアン型は codice_39 である。ブーリアン型を出力するコードは以下のようになる:bool myBool = (i == 5);System.Console.WriteLine(myBool ? "I = 5" : "I != 5");Dartでは、dart:core ライブラリに bool クラスがあり、true と false がそれの真偽値(とそのリテラル)である。(「他の多くの値は真として扱われる」という、他の多くの言語と違い)true 以外は全て偽として扱われる。さらに checked mode では、if文など真偽値が必要とされる場所では型チェックがされるため、他の型の値であった場合は型チェックでエラーになる。キーワード codice_59 と演算子 codice_60、codice_61、codice_62 などが1950年代に導入された。これはFORTRANが標準化される以前のことである。Haskell では codice_63 のように定義される型であり、Bounded Enum Eq Ord Read Show などの型クラスのインスタンス型である。not・&&・|| といった関数と演算子がある。Javaでは、ブーリアンはプリミティブ型で codice_64 である。整数型からcodice_64への、あるいはcodice_64からの型変換は無いことをC言語プログラマは留意する必要があるが、コンパイル時にエラーになるので全く問題は無い。int i = 5;if (i) System.out.println("i is five");このようなコードはコンパイル時エラーとなる。ブーリアン型を出力するコードは以下のようになる。boolean myBool = (i == 5);System.out.println("i == 5 is " + myBool);この出力結果は次の通り。codice_64 のラッパークラスは codice_19 である。JavaScriptにはBoolean型があり、それの真偽値(とそのリテラル)は true と false である。比較演算などの結果はBooleanの値になるが、論理演算子 && や || は引数を次で示すように扱って短絡評価し、結果はどちらかの引数の値となる。JavaScriptでは論理演算子やif文など真偽を必要とする場合に、それが真として扱われること(真となる値)を truthy(真値っぽい)、偽として扱われること(偽となる値)を falsy(偽値っぽい)と言う。代表値 false の他、Undeined型の値、Null型の値、数値の 0 と −0 と NaN、空文字列( " )、以上の値が falsy であり、代表値 true の他、以上で述べた falsy である値以外の全ての値が truthy である。なお標準仕様であるECMAScriptの規格票ではそのような用語を使わず、真偽値を評価する場所では §7.1.2(ECMA-262 7th Edition の場合)で示されている ToBoolean という操作を使って true か false かを得るといったように記述されている。Lispでは、近年のSchemeのように大きく異なる方言も多いが(Schemeについては後述)だいたいのLispでは、他の言語のnullに相当するcodice_69というシンボルが特殊なシンボルで、nullのような意味の他、空リストcodice_70や偽の代表値でもある(同じものであるか、同一視される)。それ以外は全て真として扱われる。真の代表値としてcodice_71という特殊なシンボルがある。Schemeでは真偽値は codice_72 と codice_73 であり、if などでは codice_73 以外のあらゆる値(特に、空リスト codice_70 も)が真として扱われる。ML には codice_39 型があり、値として codice_48 と codice_47 をとる。以下に例を示す。OCamlも codice_39 型を持ち、値として codice_48 と codice_47 をとる。- : bool = truePascalでは、codice_19 は基本データ型として提供されている。以下に例を示す。varvalue := True;value := False;if value thenbeginend;なお、PascalをベースにしたDelphi言語(Object Pascal)には、codice_19 型の他に codice_84 型(1バイト論理型)、codice_85 型(2バイト論理型)、codice_86 型(4バイト論理型)が存在する。Perlでは、集合型でないデータ型である数や文字列には区別がない(すべてスカラーと呼ばれる)。ブール演算では、要素を持たない集合型、空の文字列、値が 0 と等しい数値、文字列 codice_87 と codice_88、未定義変数が "false" と解釈される。これら以外の全ての値は "true" と解釈される(例えば codice_89 とか codice_90 といった文字列は「0 だが true」となる)。集合型の要素は、存在するかしないかを評価されることもあり、全ての変数は定義されているかいないかを評価されることがある。ハッシュや配列の要素で値が codice_91 であるものは、存在しているが未定義である。存在と定義の区別は、スカラーをブーリアンのように扱う際に重要である。Perl 5 では真理値を表す定数は組み込まれていないが、Perl 6 では存在している。Pythonでは、以下のような値が偽として扱われる。他は真として扱われる。Ruby等に慣れていると最後のようなオブジェクトの扱いを間違えることがあるので注意が必要である。定数 codice_21 と codice_22 は Python 2.2.1 でビルトインに追加された。bool 型は Python 2.3 で追加された。比較演算などは True または False を返す。"or" や "and" は短絡評価によりオペランドの1つを返す。の codice_39型はPythonとほぼ同じで、値として codice_42 と codice_96 が定義されており、0やNULLと同じような値は概ね FALSE と見なされる。等はFALSEと見なされる。また、比較方法によっては厳密な比較を行うこともできる。$a = 0;print ( $a == false ); //trueと評価されるprint ( $a === false); //falseと評価されるprint ( "0" == 0 ); //trueと評価されるprint ( 0 == " ); //trueと評価されるprint ( "0" == " ); //falseと評価される 緩やかな比較では推移律が成り立たない場合があるRubyにはブーリアン型に相当するようなクラスは無く、codice_47 は codice_98クラスのインスタンス、codice_48 は codice_100クラスのインスタンスである。真偽値としては、codice_47 と codice_69 以外は全て真として扱われるので、空文字列や数値の 0 が偽として扱われる言語に慣れた者や移植の際は注意が必要である。a = 0if (a) elseend このコードは "true" を表示する。codice_69もオブジェクトであり、codice_104クラスのインスタンスである。p false.classp true.classp nil.classとした場合、それぞれ "FalseClass"、"TrueClass"、"NilClass" が出力される。Visual Basic には codice_19 型があり、比較演算の結果はこの型となる。16ビット(2バイト)の整数として格納されるが、値は codice_106 と codice_107 しかない。以下に例を示す。Dim isSmall As BooleanisSmall = intMyNumber < 10 ' 式を評価した結果は True か False となるIf isSmall ThenEnd IfDim hellFreezesOver As Boolean ' Boolean 変数は False で初期化されるhellFreezesOver = False ' あるいは、代入文を使うこともできるDo Until hellFreezesOverLoopなお、OLE/COM、とくにOLEオートメーションで使用される論理型 codice_108 も、Visual Basic の codice_19 型と同一である。

出典:wikipedia

LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。