java - 内联条件否定

标签 java javascript c++ c

是否有一种内联方法可以有条件地否定值或表达式,而无需使用如下所示的条件评估?:

result = (condition) ? value : -value;
result = value * ((condition) ? 1 : -1);

我目前正在使用 JavaScript,但我一直想知道使用它的其他语言是否也有同样的情况。

最佳答案

您可以执行(bool - !bool * 1) * value(bool - !bool * 1) 返回 1 表示 true,-1 表示 false。一种方法可能有点矫枉过正;坚持原来的可读代码。使用 C/C++,您可以不用宏(但要小心 bool 将被评估两次)。

编辑:(bool - !bool) * value 适用于 Javascript 和 PHP(尚未测试其他版本)。我想我添加了 * 1 最初是为了防止它无法弄清楚它应该是一个 int :P

我不确定这是否更快(尽管我相信算术表达式比分支更快),并且正如其他人所说,您可能不需要担心速度。您也没有节省很多 Angular 色:P

关于java - 内联条件否定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17711121/

相关文章:

java - 实践中的 Http GET 调用失败(通过 web HTTP 测试检查并成功)

javascript - setTimeout 与 Promise 一起使用时的不明确行为

javascript - 如何在知道确切的 'th' 文本的情况下获取正确的元素

c++ - 惰性参数评估

java - 寻找快速方法将格雷码中的 boolean[] 转换为 Java 中的 BigInteger,反之亦然

java - Maven : Not able to download dependencies jta:1. 0.1B

c++ - 如何在 CMake 中链接库依赖项的 PIC 版本?

c++ - 为什么 std::string 不是模板常量参数的有效类型?

java - 连接字符以形成字符串会给出不同的结果

javascript - 通过 postMessage() 进行通信