运算符 XOR(排他析取)
- 来源: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgOpXor
- 最后更新: 2016-08-15
返回两个数值的按位异或(排他析取)
语法
` declare operator Xor ( byref lhs as T1, byref rhs as T2 ) as Ret
`
用法
` result = lhs Xor rhs
`
参数
lhs
左侧表达式。
T1
任意数值或布尔类型。
rhs
右侧表达式。
T2
任意数值或布尔类型。
Ret
数值或布尔类型(随 T1 和 T2 变化)。
返回值
返回两个操作数的按位异或结果。
描述
该运算符返回其操作数的按位排他结果,这是一个逻辑运算,根据操作数的位来设置结果中的位(对于布尔值转换为整数,false 或 true 的布尔值变为 0 或 -1 的整数值)。
下方真值表展示了布尔排他运算的所有组合:
| 左侧位 | 右侧位 | 结果 |
|---|---|---|
| 0 | 0 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 1 | 0 |
不执行短路求值——始终对两个表达式求值。
返回类型取决于所传递值的类型。Byte、Ubyte 和浮点类型值首先被转换为 Integer。如果左侧和右侧类型仅在有无符号方面不同,则返回类型与左侧类型(T1)相同,否则返回两种类型中较大的那个。只有当左侧和右侧类型都是 Boolean 时,返回类型才也是 Boolean。
该运算符可为用户自定义类型重载。
示例
start GeSHi
vb
' Using the XOR operator on two numeric values
Dim As UByte numeric_value1, numeric_value2
numeric_value1 = 15 '00001111
numeric_value2 = 30 '00011110
'Result = 17 = 00010001
Print numeric_value1 Xor numeric_value2
Sleepend GeSHi
start GeSHi
vb
' Using the XOR operator on two conditional expressions
Dim As UByte numeric_value1, numeric_value2
numeric_value1 = 10
numeric_value2 = 15
If numeric_value1 = 10 Xor numeric_value2 = 20 Then Print "Numeric_Value1 equals 10 or Numeric_Value2 equals 20"
Sleep
' This will output "Numeric_Value1 equals 10 or Numeric_Value2 equals 20"
' because only the first condition of the IF statement is trueend GeSHi
方言差异
- 在 -lang qb 方言中,该运算符不能被重载。
与 QB 的差异
- 无
参见
返回 目录