比较 4 个数字的简洁代码

发布于 2024-10-30 07:33:31 字数 135 浏览 7 评论 0原文

我必须比较 4 个变量 a,b,c,d,如果其中任何一个是 -1,则返回 false。 这能有多简洁? 可能可以进行一些数学运算!我不喜欢为了这个简单的事情浪费这么多字符或台词。

I've to compare 4 variables a,b,c,d if any of them is -1 return false.
and How mush terse this could be ?
may be some mathematical operation could be done !! I dont like wasting so many characters or lines for this simple thing.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

属性 2024-11-06 07:33:32

如果您的数字可以是非负数或-1,那么您可以使用以下内容:(

return~(a|b|c|d);

删除了空格,使其看起来更简洁)

If your numbers can be either non-negative or -1, then you can use the following:

return~(a|b|c|d);

(removed the white-space so it looks more terse)

世俗缘 2024-11-06 07:33:31

通常:

return a!=-1 && b!=-1 && c!=-1 && d!=-1;

由于 ~(-1) == 0 在 2 的补码机中,并且 0 是一个假值,因此我们可以将上面的结果简化为

return ~a && ~b && ~c && ~d;

or,而不依赖于 2 的补码:

return a+1 && b+1 && c+1 && d+1;

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

(但是请使用正常的方式。多年后你可能会忘记这个聪明的黑客在做什么。)

Normally:

return a!=-1 && b!=-1 && c!=-1 && d!=-1;

Since ~(-1) == 0 in 2's complement machine, and 0 is a false value, we could reduce the above to

return ~a && ~b && ~c && ~d;

or, not relying on 2's complement:

return a+1 && b+1 && c+1 && d+1;

but it has undefined behavior on overflow.

(But please use the normal way. You may forget what this clever hack is doing years later.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文