- - PR -
VisualBasic6.0 forとcaseを用いた数の和について
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-07-03 14:09
unibonさん理論によれば、
Case Is >= (154 And i <= 333) について展開すると、 iが333以下のとき、 「i <= 333」は「true」、「154 And true」は「154」したがって、 Case Is >= 154 iが333より大きいとき、 「i <= 333」は「false」、「154 And false」は「0」、したがって、 Case Is >= 0 と解釈している。ということですよね? ※true = -1, false = 0 とみなしています。 [ メッセージ編集済み 編集者: こあら 編集日時 2008-07-03 14:10 ] | ||||||||||||||||
|
投稿日時: 2008-07-03 16:22
そうです。 ちなみに、この構文で使いづらいと感じるところは、
がどんな条件で合致するかを知りたくても、
や、
のようにして確かめることができないところですね。 | ||||||||||||||||
|
投稿日時: 2008-07-03 21:04
あぁ〜、そっか。ちょい勘違いしていた。 (154 And i <= 333) の部分って、154をBooleanに暗黙的に変換して、 i <= 333と論理演算としてのAndとる と言う意味じゃなくて、 i <= 333 の比較結果をIntegerに暗黙的に変換して 154とBit演算としてのAndをとる って事か。 VB6だと、Boolean→Integerの暗黙的変換が可能って事か。 Boolean→Integerが暗黙的変換されない前提で考えてたわorz と成ると、あとはTrue→Integerの変換結果が-1に成るかどうかと言う問題になるのか | ||||||||||||||||
|
投稿日時: 2008-07-04 14:39
VB は 0 が False で 0 '以外' は True という仕様になっています。 False が 0 なので便宜上 True は -1 になっているだけです。(補数で FFFF... だからですね)
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |