C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 106 を表示中)
■63516 / )  Re[7]: Brushesのカラーコードを変数に出来ませんか?
□投稿者/ 魔界の仮面弁士 (46回)-(2012/09/03(Mon) 23:57:24)
No63514 (shu さん) に返信
> CBoolはBoolean型への変換を行う関数であって
> =0ならFalse
> <>0ならTrue
> にするというのが目的の関数ではないはず。

う〜ん。だとすると、何を Boolean 型に変換する事を目的としているのでしょう。
文字列からの変換専用でしょうか?


以下、Visual Basic 言語仕様 (Ver.11)より引用:

8.2 ブール値変換
》Boolean は数値型ではありませんが、列挙型の場合と同じように、
》数値型との間で縮小変換を行うことができます。
》リテラル True は、Byte の場合はリテラル 255、UShort の場合は 65535、(中略)
》リテラル False は、リテラル 0 に変換されます。
》数値のゼロは、リテラル False に変換されます。
》その他のすべての数値は、リテラル True に変換されます。
》Boolean から String への縮小変換では、(以下略)



> 実質的には変更されることはないのでしょうけど。

VB2 の頃は、True/False は存在したものの、CBool も Boolean 型も存在しなかったんですよね。
当時は True は -1 で、False は 0 を表す特別なキーワードでした。

それはさておき、VB 以外にも多くの言語系が、全ビットoff を FALSE としているようですね。
というよりも、他の定義を見たことが無いような…(あるのかな)。

一方、TRUE の内部表現は言語ごとに異なっていますね。1 だったり -1 だったり。

少なくとも、「FALSE ではない」「NOT FALSE は TRUE である」までは
どの言語系でも確定しているものと思いますが、その反対となる
NOT TRUE は、FALSE とは限らない処理系もありますね。


> 確かに>0は符号付の事を考えると汎用性に欠けていたかもしれません。
まぁ、MSDN Library のチュートリアルでも、「> 0」を使うように
表記されている例もあるので、それ自体は珍しい表現ではないのですけれどね。
返信 編集キー/


管理者用

- Child Tree -