vb.net - 为什么 Visual Basic 中 True 存储为 -1?

标签 vb.net

似乎许多语言,包括 C/C++ 和 Java,都具有逻辑非(将 0 转换为 1,反之亦然)和按位非(按位取反又称为补码)。在 Visual Basic 中,Not 只是按位,而 True 的值为 -1。 VB 以这种方式实现有什么特殊原因吗?

如果它是 BASIC 遗留下来的一些痕迹,那么它是否代表了 1964 年 (BASIC) 和后来的语言(如 C (1972))时代之间思想的变化?

最佳答案

有历史,BASIC 也没有区分逻辑运算符和按位 AND 和 OR 运算符。 Not 在 VB.NET 中完成这两项工作,如果操作数是 bool 值,则它是逻辑 NOT,如果操作数是数字,则它是按位求反。

True 转换为 -1 主要是为了允许 AndOr 运算符生成逻辑表达式结果。因此,假设 True And 2 仍然为 true 并且匹配 True And CBool​​(2),如果 True 转换为 1,则该方法将不起作用。缺少的短路行为是旧 VB 版本中相当严重的缺陷,并激发了 AndAlso 和 OrElse 的添加。

关于vb.net - 为什么 Visual Basic 中 True 存储为 -1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41193938/

相关文章:

vb.net - SQL查询数据收集

c# - 最大报表处理作业限制 Crystal 报表,这是由于我的代码错误?

vb.net - 如何在VB.net中连接OLEDB和ODBC而不使用多个对象

c# - 在哪里可以找到 TreeView 节点中的 Click 事件?

vb.net - 预定程序VB.NET

vb.net - 扩展方法上的通用约束的奇怪行为

c# - 您如何随机将整数中的一位归零?

regex - VB 网络正则表达式模式

vb.net - 如何在顶部制作表格

vb.net - 在组合框项目的帮助下显示/隐藏另一个组合框