1不是整数表示True,-1是。
Debug.Print CInt(True) 'prints -1
Debug.Print CInt(False) 'prints 0
Run Code Online (Sandbox Code Playgroud)
布尔运算符(Not,And,Or,XOr)表现为“逻辑运算符”时,他们的操作数都是布尔值。如果不是,则它们表现为“按位运算符”,但事实是,它们始终是按位的。
仅因为定义为,整数值才1转换为布尔值,这意味着任何非零值都是布尔值。但是,当用于时,您只会获得正确/预期的逻辑行为。TrueTrueNot FalseTrue-1True
An Integer由16位表示,因此1:
0000 0000 0000 0001
Run Code Online (Sandbox Code Playgroud)
这使得Not 1:
1111 1111 1111 1110
Run Code Online (Sandbox Code Playgroud)
符号位打开,因此该值为负-修剪无关紧要的数字,您将得到:
10
Run Code Online (Sandbox Code Playgroud)
这是的二进制表示形式2。因此,Not 1是-2。
相反,-1将是:
1111 1111 1111 1111
Run Code Online (Sandbox Code Playgroud)
而且Not -1是这样的:
0000 0000 0000 0000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |