我有以下代码段:
if (w)
{
if (b)
{
if (c)
cout << "great!";
else
cout << "3";
}
else
{
cout << "2";
}
}
else
{
cout << "1";
}
我必须使用三元运算符。我以为
cout << w ? b ? c ? "great" : "" + 3 : "" + 2 : "" + 1;
没关系。事实并非如此。
已编辑:
即使我使用以下代码段,它仍然无法正常工作:
cout&lt;&lt; (w?b?c?“太棒了!”:“3”:“2”:“1”);
请尝试运行以下代码:
int w =1, b = 1, c = 0;
if (w)
{
if (b)
{
if (c)
cout << "great!";
else
cout << "3";
}
else
{
cout << "2";
}
}
else
{
cout << "1";
}
cout << " ";
cout << w ? (b ? (c ? "great" : "3") : "2") : "1";
为什么输出3 1?
我应该如何正确地“转换”代码?
答案 0 :(得分:2)
使用大括号{}和()因此应该有效。
- &GT;开始在原始代码中使用大括号,然后用三元运算符替换“if”并用括号替换大括号。
你会得到这样的东西:
cout << (w ? (b ? ( c ? "great" : "3") : "2") : "1");
不确定我真的更喜欢这种方法......
答案 1 :(得分:2)
等效的三元表达式是
cout << (w ? b ? c ? "great!" : "3" : "2" : "1");
但是如果你很难弄清楚如何编写这样的嵌套表达式,那么同事就很难阅读它。尽量选择可读性和正确性来简化单行。
答案 2 :(得分:0)
这不是你如何在C ++中将整数转换为字符串。 &#34;&#34; + 3有一个完全不同的含义(这是一个可怕的无用的,只给每个人使用它的鼻子恶魔。)
如果您将整数正确转换为std::string
,那么您的代码就没有问题。
答案 3 :(得分:0)
试试这个,
w ?
(
b ?
(
c ?
(
cout << "great!"
)
: cout << "3"
)
: cout << "2"
)
: cout << "1";