Lua中单波浪号~的作用是什么?是否为不等于运算符~=的简写?
Lua 中单独波浪号
~ 的含义 首先明确结论:单独的 ~ 不是不等于运算符 ~= 的简写形式,两者功能完全无关。
你示例中出现的二元用法(两个操作数)12 ~ 36 里,~ 是 Lua 5.2 及以上版本支持的按位异或运算符,运算规则为:对两个整数的每一位二进制位逐一比较,对应位数值不同时结果位为1,相同时结果位为0。
拿你的示例计算:
- 12 转二进制为
001100 - 36 转二进制为
100100 - 按位异或后得到二进制
101000,对应十进制数值 40 - 最终
num_1的赋值结果为 40
额外补充:如果 ~ 作为一元运算符使用(只有一个操作数,比如 ~12),它的作用是按位取反,对整数的所有二进制位取反,最终结果等价于 -数值 - 1,比如 ~12 的计算结果为 -13。
不等于运算符的固定写法为 ~=,不能省略等号单独用 ~ 表示不等判断,强制这么写会触发语法错误。
内容的提问来源于stack exchange,提问作者tronjo
相关产品推荐
相关产品推荐

