f(-1);
int f(int a) {
return (a%2) ? (a%2) : (a*2);
}
考虑上面的函数 f()
,如果 a%2
被评估为非零,则返回 a%2
。
问题: 是否有任何高级运算符或表达式可以合并条件和返回值并形成类似于
return (a%2) OR (a*2) // underlying logic is return (a%2) ? (a%2) : (a*2);
我知道我已经提供了一种可能的解决方案 return (a%2) ? (a%2) : (a*2);
已经,但我想更多地探索 C++,所以我问了这个问题。这个问题只是一个是/否问题。我期待使用 if-else 语句以外的答案
我的想法:
条件中的a%2
被评估并转换为 bool
类型,因此无法转换回相应的 int
值。
最佳答案
您可以利用 bool 表达式结果为 0 或 1 的事实并使用
int f(int a) {
return (a > -1) * (a + 1);
}
如果 (a > -1)
为真那么我们有 1 * (a + 1)
否则我们有 0 * (a + 1)
.
不过我不建议这样做。清晰的代码应该是您在代码中尝试维护的重要内容之一。使用众所周知的语法,如 condition ? true_result : false_result
恕我直言更好。
编辑:
如果您希望该值不是零,那么它会变得有点复杂。您需要将 false 条件的值乘以 bool 表达式的返回值,该表达式仅在 true 条件为 false(非条件)时才为真。
int f(int a) {
return ((a % 2) * (a % 2)) + (!(a % 2) * (a * 2));
// ^ true part ^ ^ false part ^
}
当 true 部分
为 0
时,false 部分
将是一个值,而当 false 部分
> 是 0
true part
将是一个值。
关于c++ - 条件表达式的计算结果可以在C++中返回吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35441618/