正确的三元运算符格式
Proper Ternary Operator Format
这就是我的。我不确定如何正确编写它。我试过谷歌搜索,但无济于事。请不要畏缩太多:
cout << (guess > randomNumber) ? "\nWhoops! Try again!\n You guessed higher than the random number!\n\n"
: (guess < randomNumber) ? "\nWhoops! Try again!\n You guessed lower than the random number!\n\n"
: "";
我想要它做的是:
// 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;
如有任何帮助,我们将不胜感激。我只想学习如何编写更高效、更小的程序。非常感谢任何反馈。
more efficient
与您在那里所做的事情无关(如果 "efficient" 您指的是更好的运行时特性)。
smaller
一个不起眼的目标,但是 不是 如果 可读性 因为它而达不到要求(如果因为句法复杂性,则更是如此) ...缺少括号...最终结果是错误的)。
记住:代码是写给人类阅读的。
您可能应该坚持使用您也在问题中展示的 if
和 else
方法。也就是说,恕我直言 "good" 方法(如果你真的需要对此进行抽象)将其打包到某个函数中:
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"});
这是否真的有助于提高可读性是我留给 reader 的选择。
在整个表达式周围放置一些括号,否则您将最终打印布尔值:
int guess = 10;
int randomNumber = 9;
cout << (guess > randomNumber) ? "\nWhoops! Try again!\n You guessed higher than the random number!\n\n"
: (guess < randomNumber) ? "\nWhoops! Try again!\n You guessed lower than the random number!\n\n"
: "" ;
// Output: 1
正确代码:
int guess = 10;
int randomNumber = 9;
cout << ( (guess > randomNumber) ? "\nWhoops! Try again!\n You guessed higher than the random number!\n\n"
: (guess < randomNumber) ? "\nWhoops! Try again!\n You guessed lower than the random number!\n\n"
: "" ); // Notice the brackets!
/*Output:
Whoops! Try again!
You guessed higher than the random number!*/
这就是我的。我不确定如何正确编写它。我试过谷歌搜索,但无济于事。请不要畏缩太多:
cout << (guess > randomNumber) ? "\nWhoops! Try again!\n You guessed higher than the random number!\n\n"
: (guess < randomNumber) ? "\nWhoops! Try again!\n You guessed lower than the random number!\n\n"
: "";
我想要它做的是:
// 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;
如有任何帮助,我们将不胜感激。我只想学习如何编写更高效、更小的程序。非常感谢任何反馈。
more efficient
与您在那里所做的事情无关(如果 "efficient" 您指的是更好的运行时特性)。
smaller
一个不起眼的目标,但是 不是 如果 可读性 因为它而达不到要求(如果因为句法复杂性,则更是如此) ...缺少括号...最终结果是错误的)。
记住:代码是写给人类阅读的。
您可能应该坚持使用您也在问题中展示的 if
和 else
方法。也就是说,恕我直言 "good" 方法(如果你真的需要对此进行抽象)将其打包到某个函数中:
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"});
这是否真的有助于提高可读性是我留给 reader 的选择。
在整个表达式周围放置一些括号,否则您将最终打印布尔值:
int guess = 10;
int randomNumber = 9;
cout << (guess > randomNumber) ? "\nWhoops! Try again!\n You guessed higher than the random number!\n\n"
: (guess < randomNumber) ? "\nWhoops! Try again!\n You guessed lower than the random number!\n\n"
: "" ;
// Output: 1
正确代码:
int guess = 10;
int randomNumber = 9;
cout << ( (guess > randomNumber) ? "\nWhoops! Try again!\n You guessed higher than the random number!\n\n"
: (guess < randomNumber) ? "\nWhoops! Try again!\n You guessed lower than the random number!\n\n"
: "" ); // Notice the brackets!
/*Output:
Whoops! Try again!
You guessed higher than the random number!*/