于是我开始瞎搞与Lua的逻辑运算符和,或和不。如此处所述, print (4 and 5)将返回5而print (4 or 5)将返回4。如果您随后切换数字,则表明print (5 and 4)它将返回4。我理解的是,在解释和如果是运营商返回的第一个操作数错误,第二个如果这是真的,但什么我是从C ++等语言使用的是print (4 and 5)回报4。如何获得与C ++或类似语言相同的结果?
此C代码不会打印 4
printf("%d\n", 4 & 5);
Run Code Online (Sandbox Code Playgroud)
但这是由于的二进制表示而造成的意外4。
实际上,下面的代码print 4,既不是也不5是6:
printf("%d\n", 5 & 6);
Run Code Online (Sandbox Code Playgroud)
如果使用逻辑和,则此代码将输出1,而不是4或5。
printf("%d\n", 4 && 5);
Run Code Online (Sandbox Code Playgroud)