正确的三元运算符格式
Proper Ternary Operator Format
这就是我所拥有的。我不确定如何正确编写它。我试着在谷歌上搜索,但无济于事。请不要太畏缩:
cout << (guess > randomNumber) ? "nWhoops! Try again!n You guessed higher than the random number!nn"
: (guess < randomNumber) ? "nWhoops! Try again!n You guessed lower than the random number!nn"
: "";
我希望它做的是这样的:
// Gives hint that inputted number is higher or lower
// than inputted number
if (guess > randomNumber)
cout << "nWhoops! Try again!"
<< " You guessed higher than the random number!n"
<< endl;
else if (guess < randomNumber)
cout << "nWhoops! Try again!"
<< " You guessed lower than the random number!n"
<< endl;
任何帮助将不胜感激。我只是想学习如何编写更高效、更小的程序。将不胜感激任何反馈。
在整个表达式周围加上一些括号,否则你最终会打印布尔值:
int guess = 10;
int randomNumber = 9;
cout << (guess > randomNumber) ? "nWhoops! Try again!n You guessed higher than the random number!nn"
: (guess < randomNumber) ? "nWhoops! Try again!n You guessed lower than the random number!nn"
: "" ;
// Output: 1
正确的代码:
int guess = 10;
int randomNumber = 9;
cout << ( (guess > randomNumber) ? "nWhoops! Try again!n You guessed higher than the random number!nn"
: (guess < randomNumber) ? "nWhoops! Try again!n You guessed lower than the random number!nn"
: "" ); // Notice the brackets!
/*Output:
Whoops! Try again!
You guessed higher than the random number!*/
更高效
与您在那里所做的事情无关(如果"高效"是指更好的运行时特征)。
较小
一个卑微的目标,但如果可读性因此而不足,则不会(如果由于语法复杂性......缺少括号...最终结果是错误的)。
请记住:代码是为人类阅读而编写的。
您可能应该坚持您在问题中也展示if
和else
方法。也就是说,恕我直言,一个"好"的方法(如果你真的需要对此进行抽象)是将其打包到某个函数中:
template<class T, class X, class Y, class Z>
void comp_if(T value, T reference, X less, Y equal, Z greater) {
if (value < reference) less();
else if (value > reference) greater();
else equal();
}
像这样使用
// missing real macros a lot
comp_if(foo, bar,
[]() {cout << "less"; },
[]() {cout << "equal";},
[]() {cout << "greater"});
这是否真的有助于提高可读性是我留给读者的选择。
相关文章:
- 三元运算符和 if constexpr
- 在 c++ 中三元运算符中不允许继续(关键字)吗?
- 三元运算符在返回语句中给出意外的结果
- 递归中三元运算符的奇怪行为
- 错误:三元运算符无法在对象中正常工作"cout"
- 是否允许三元运算符在C++中计算两个操作数?
- 有条件地选择带有 decltype() 和三元运算符的类型
- 三元运算符在C++中的意外行为
- 有没有办法将 for 循环结果返回到像三元运算符这样的函数中?
- 变量值,在三元运算符之后
- 是否可以在C++中使用三元运算符在 if 语句中选择比较运算符?
- c++中的增量和三元运算符优先级
- C++中三元运算符的意外行为
- 用于返回开关的三元运算符
- 替换模板元编程中的三元运算符
- 三元运算符 '?:' 在 4.9.0 之前的 GCC 版本中推断出不正确的类型?
- 在 std::map 上使用三元运算符和 std::更大的附加参数
- "Do nothing"在三元运算符的其他部分?
- 如何确定三元运算符的返回类型?
- 无法使用三元运算符有条件地分配"istream &"?