在Visual Basic 6中的一个语句中的多个变量赋值

Tim*_*Tim 2 vb6 variable-assignment

使用遗留代码我遇到了一些奇怪的变量赋值,我不确定是合法的VB6语法,但我找不到文档来备份这种感觉.

Dim ComStart, ComEnd, CR As Boolean
ComStart = ComEnd = CR = False
Run Code Online (Sandbox Code Playgroud)

我的怀疑是

a)原始声明应该是

Dim ComStart as Boolean, ComEnd as Boolean, CR as Boolean

b)现在实施的声明不会分配任何内容ComStart.

任何答案或文件都非常感谢

Mar*_*rkJ 6

你找到的代码在技术上是合法的 VB6,因为它编译和运行.但原作者很可能认为代码会做出不同的事情!有两个误解.

  • ComStartComEndCR的变体,而不是布尔值.
  • 在VB6中=是等于运算符,而不是在C中找到的赋值运算符.
    • CR = False不改变的价值CR.它比较当前的CRto 值False,并进行评估,True好像CR等于False.让我们说它评估为False
    • 现在你有了表达方式ComEnd = False.同样,这不会改变它的价值ComEnd.它将它与之进行比较False,并进行评估,True好像ComEnd等于False.这次让我们说它评估为True.
    • 现在你有了赋值语句 ComStart = True.这台价值ComStartTrue

所以你的原始代码

Dim ComStart, ComEnd, CR As Boolean
ComStart = ComEnd = CR = False
Run Code Online (Sandbox Code Playgroud)

创建两个变体ComStartComEnd一个布尔值CR,然后

  • CR 保持其默认值, False
  • ComEnd保持其默认值,Empty
  • ComStartFalse因为Empty = (Empty = False)False.

简单!...我希望遗留代码的其余部分更少,更好,是偶然的.