用于比较4个数字的简洁代码

Nee*_*asu 1 c math coding-style xor

我要比较4个变量,a,b,c,d如果它们中的任何一个-1返回false.这可能是多么简洁?可能是一些数学运算可以做!! 我不喜欢为这个简单的事情浪费这么多的字符或线条.

ken*_*ytm 10

一般:

return a!=-1 && b!=-1 && c!=-1 && d!=-1;
Run Code Online (Sandbox Code Playgroud)

由于~(-1) == 0在2的补码机中,并且0是假值,我们可以将上述减少到

return ~a && ~b && ~c && ~d;
Run Code Online (Sandbox Code Playgroud)

或者,不依赖于2的补码:

return a+1 && b+1 && c+1 && d+1;
Run Code Online (Sandbox Code Playgroud)

但它在溢出时有未定义的行为.

(但请用正常方式.你可能会忘记这个聪明的黑客多年后所做的事情.)