似乎许多语言,包括C/C++和Java,都有逻辑Not(转换0到1,反之亦然)和Bitwise Not(按位反转AKA的补码).在Visual Basic中,Not只是按位,并且True值为-1.VB是以这种方式实现的吗?
如果它是从BASIC继承的一些遗迹,那么它是否代表了1964年(BASIC)与C(1972)等后期语言时代的思维变化?
有历史,BASIC也没有区分逻辑和按位AND和OR运算符. Not在VB.NET中执行这两个任务,如果操作数是布尔值则是逻辑NOT,如果操作数是数字则是按位否定.
True转换为-1主要是为了允许And和Or运算符生成逻辑表达式结果.所以,比方说,True And 2仍然是真的和匹配True And CBool(2),如果True转换为1则不会起作用.缺少的短路行为是旧VB版本中相当严重的缺陷,并激发了AndAlso和OrElse的加入.
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |