对于VB.net中的以下FOR循环(我的代码的简化版本),封装的逻辑仅被击中两次。我假设最终案例为10和50将被解释为“如果我<10并且我<50”则继续,但似乎并非如此。
For i As Integer = 0 To 10 And 50
'...logic...
Next
什么是正确的解释,有没有办法创建一个包含多个结束案例的FOR循环?
答案 0 :(得分:7)
你的循环等同于
Dim t = 10 And 50
For i As Integer = 0 To t
' something '
Next
其中10 And 50
是对两个AND
个数字的按位Integer
操作。由于10 And 50
返回2
,您会从0
转到2
。
答案 1 :(得分:1)
可能And
是按位吗? 10 = 8 + 2,50 = 32 + 16 + 2,所以按位,只是2。
答案 2 :(得分:1)
For
语句的语法是(编辑为适合):
For
LoopControlVariable 等于 表达式To
表达式 [{{1} } 表达式]
因此Step
关键字在语句中不起特殊作用,它只是And
表达式的一部分。对于积分操作数,它执行数学AND运算,对积分值中的位执行按位AND。
由于10和50等于00001010而00110010二进制= 00000010(二进制)或2(十进制),因此循环从0到2迭代。
答案 3 :(得分:0)
你想要完成什么?你为什么要为我&lt; 10&i&lt; 50?难道你不需要我&lt; 50?