ここから本文です

Boolean型ってTrueが1?0?-1? あなたのお使いの言語は?

ozo********さん

2011/8/2520:46:23

Boolean型ってTrueが1?0?-1?
あなたのお使いの言語は?


今まで、あれ、勘違いしてた。
FreePascalって、Trueが-1で、Falseが0だ。

こうすりゃいいらしいけど、、、、わかりずれーな。-1,0
Boolean 値を整数にする (2001.11.15)
Boolean 型の値を C のように False = 0、True = 1 として扱うには Ord 関数を使います。Ord 関数は順序型式の順序値を返す関数ですが、Boolean 型では
Ord(False) = 0
Ord(True) = 1

http://www.zoo.co.jp/solution/tech/delphi/

補足えーと、説明が不十分かもだけど、

XMLだと、ノードがないことがFalseで、ノードがあればTrueだ。
<bool>False</bool> も<bool>があるから、Trueになる。


直接、値のBoolean型の取得はできないの?
http://www.mitchy-world.jp/xml/xpath/step09.htm

FreepascalとXMLをいじっていて、今気がついたことでした。^^;

他の言語ではどんな感じ?True=1、False=0で統一されてないのかな?

閲覧数:
18,952
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

khurataさん

2011/8/2602:48:46

もちろん、コンピューターは数値でなければ処理出来ないのですから、Boolean 型の True/False は、どんな言語においても、必ず何らかの内部値が割り当てられています。
しかし、「True が -1 で False が 0」とかいう話は、「ある特定の処理系における決まり」に過ぎず、「とある一例」に過ぎません。

たとえば同じ言語のコンパイラが、異なる処理系に用意されている場合、それぞれの内部値が同じであるとは断言出来ません(その1つの理由は、「真偽値は、それぞれの CPU の設計によって、最適値が異なってくるから」です)。

また、そもそも「Boolean 型で扱いたい」という要求は、「True か False かで扱いたい」という要求です。「-1 か 0(つまり算術演算が出来る値)で扱いたい」ならば、数値型か列挙型を使うべきです。論理演算しか出来ない型だからこそ、目的に適った、安全なプログラムが書けるという場合が有るわけです(そうでなければ Boolean 型というものが存在するはずがない)。
仮に、True の内部値が 555 で、False の内部値が -35 というトンデモな値であっても(それぞれの内部値が違いさえすれば)、ソースプログラム上で True と False を算術演算しない限り、それは正しく動作するでしょう。

どうしても Boolean 型の「内容」(内部値とは必ずしも同じでないことに注意)で算術演算したいならば、そのようなロジックの設計を見直すか、あるいは、Boolean 型と数値型を変換するメソッドを用意するべきです。ご質問にある Ord 関数とは、まさにそのためのメソッドです。

True は、あくまで True 以外の何者でもなく、False は、あくまで False 以外の何者でもなく、Boolean 型は足したり引いたり出来る値ではないのです。

質問した人からのコメント

2011/9/1 20:10:12

聞きたかったのは、
>質問の本質は、あなたのお使いの言語は?
なので、私のよく使う言語では、0,1ですねー。
の1行で良かったのに。(苦笑

まぁ、ありがとうございました。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる