这是一个有趣的代码,我的同事们的团队成员只是稍微讨论一下…
Dim fred As Integer If True Then fred = 5 : fred = 3 : fred = 6 Else fred = 4 : fred = 2 : fred = 1
执行上述代码片段后,fred的值是多少?
尽量不要欺骗和调试代码.
这是一个高度引人入胜的代码示例,它以一个使用冒号为例的方式开始,但是有人决定自己去冒险为fred提供一个结果.
更新:
我通常不会像这样编写代码,而这个代码段只是作为一个例子.正因为如此,这个问题源自于为我们的团队制定编码标准文件的讨论.
我假设你的意思是VB.Net.
根据VB语言规范的语法,您可以在这里阅读:
结果应为“6”.
这是因为“行if语句”的语法是:
If BooleanExpression Then Statements [ Else Statements ] StatementTerminator
和“声明”被定义为
Statements ::= [ Statement ] | Statements : [ Statement ]
编辑:
我想注意,调试代码不是“欺骗”.
我曾经在微软的VB编译团队工作.
有时候规范是模糊的,或者与我们实际发货的不一致.在其中的几个例子中,解决方案(我们做了什么来解决它)总是基于“好…现在编译器做什么”.
有时我们会改变编译器,有时我们会改变规范.
但是,我们总是运行编译器来查看在做出决定之前它实际上做了什么.
所以…调试代码是弄清楚它的一个重要部分…