3

私に関する限り、これには何の価値もありません。質問を調べているときにこれを発見しました。

VBA の場合:

以下を考えると:Dim a As Boolean, b As Boolean, c As Boolean

このコードa = b = c = 1 = 1 は、a を False に割り当てます。

ただしa = b = c = true、a を true に割り当てます。

なぜそうなのか、誰か説明できますか?明らか1 = 1に true と評価されます。

補足として、a = 1 = 1a も true に割り当てます。また、ブール値の代わりにバリアントを使用しても動作は同じです。

繰り返しますが、これには実用的な目的がないことを知っています。誰かが動作を説明できるかどうか知りたいです。

4

2 に答える 2

6

すべての演算子の優先順位が等しいため、式は左から右に評価されます。

a = b = c = 1 = 1

b=cはTrueを返します。

True = 1は、比較の前にTrueが-1に変換されるため、Falseを返します。

False=1はFalseを返します

a = b = c = true 

b=cはTrueを返します

True=trueはTrueを返します。

于 2012-07-20T05:14:15.663 に答える
1

この場合、左から右への比較を行っていると思いますが、代入ではありません。

b と c を true に初期化する場合

b = True
c = True

の値を確認します

a = c = 1 = 1

あなたはまだそれが間違っていることに気付くでしょう

それで考えてみると、

a = b = c = 1 = 1

有効ですライブ

a = (((b = c) = 1) = 1)

また、ブラケットを次のように変更したとしても

a = (b = (c = (1 = 1)))

それはまだ間違っているでしょう。

b と c が初期化されていない (False) 場合、a を true にする唯一の方法は、ステートメントを次のように変更することです。

a = (b = c) = (1 = 1)
于 2012-07-20T04:47:26.063 に答える