level 8
10 Or 0 结果为10
0 Or 10 结果为10
10 Or True 结果为-1
False Or 10 结果为10
没有想到结果和C语言类似
这是我在python中处理and,or运算时遇到的
我问豆包,为什么python设计的那么奇怪,如果是c++、Java、VB等,结果就只有两个True或false,结果豆包给了我这个答案,原来VB中也会出现短路求值。
我一直以为or和and运算在VB中运行结果是布尔类型。
2026年03月25日 02点03分
1
level 15
正常来说,逻辑运算和位运算应该是两类不同的运算,例如C语言有逻辑与&&和位与&,逻辑或||和位或|
但是VB当中的“逻辑运算”本质上是位运算,VB没有严格意义上的逻辑运算,仅仅是通过值类型来区分逻辑值和普通数值;因此VB的逻辑值与数值进行“逻辑运算”时,会进行位运算,并且得到数值结果
2026年03月26日 15点03分
2
说得对,并不是短路 Print True Or 1 / 0
2026年03月27日 00点03分
一如既往的强!
2026年03月27日 08点03分
@tzchf 例子很6! 10 or (1/0)返回错误(除数为0)
2026年03月27日 08点03分
level 14
VB6哪来的断路求值?(注意断路不是短路,短路是会烧坏晶体管的,正常的CPU内部都是有防短路的保护)。
VB.NET 之后才有断路语法 AndAlso 和 OrElse,VB6的 And 和 Or 没有任何断路效果,它只是根据参与计算类型来确定是做位运算(当数据是整数类型时),还是布尔运算(但数据类型是布尔类型)而已。
2026年05月18日 01点05分
5
这个短路不是电脑内部电路的物理短路吧,而且在网上能查到的说法都是短路运算,没有跟您一样用“断路”这个词的……另外短路运算本身就是纯逻辑运算,VB6没有短路运算是因为VB6就没有逻辑运算,即使参与运算的值都是逻辑类型,运算过程也是通过位运算来实现的
2026年05月18日 12点05分
@初音✨七奈 网上很多都是互相乱抄的,一人写错,其它全部跟着写错而已。正规教材里面写的都是断路,从未写过短路。
2026年05月25日 01点05分
@yjryym 你是说网上的说法全部都是错的,只有你用的教材是对的?
2026年05月26日 14点05分
@初音✨七奈 网上错是因为输入法的短路比断路靠前,导致很多人打错。再然后互相抄加上误导一大群人而已。
2026年05月29日 07点05分