需要非常简单的循环C++帮助
Need assistance with very simple C++ for loop
for( int i = 0; i <= 10; i++ )
{
cout << setw(2) << i << setw(10) << ( i <= 5 ? cout <<" = Chipotle" : cout << " = McDonalds" ) << endl;
}
因此,我期望输出为:
0 = Chipotle
1 = Chipotle
2 = Chipotle
3 = Chipotle
4 = Chipotle
5 = Chipotle
6 = McDonalds
7 = McDonalds
8 = McDonalds
9 = McDonalds
10 = McDonalds
(不用担心设置格式)
相反,我的 IDE 给了我:
= Chipotle 0 0x602208
= Chipotle 1 0x602208
= Chipotle 2 0x602208
= Chipotle 3 0x602208
= Chipotle 4 0x602208
= Chipotle 5 0x602208
= McDonalds 6 0x602208
= McDonalds 7 0x602208
= McDonalds 8 0x602208
= McDonalds 9 0x602208
= McDonalds10 0x602208
我哪里做错了?
显示cout
本身,删除三元运算符中的cout
:
cout << setw(2) << i << setw(10) << ( i <= 5 ? " = Chipotle" : " = McDonalds" ) << endl
你正在尝试一个cout。
( i <= 5 ? cout <<" = Chipotle" : cout << " = McDonalds" )
成为
要么cout <<" = Chipotle"
//or
cout << " = McDonalds"
所以你正在努力做
cout << setw(2) << i << setw(10) << cout <<" = Chipotle"
//or
cout << setw(2) << i << setw(10) << cout <<" = McDonalds"
这是不正确的。 您需要将代码更改为
( i <= 5 ? " = Chipotle" : " = McDonalds" )
这将扩展到
cout << setw(2) << i << setw(10) << " = Chipotle"
//or
cout << setw(2) << i << setw(10) << " = McDonalds"
当i <= 5
为真时,这个
cout << i << ( i <= 5 ? cout <<" = Chipotle" : cout << " = McDonalds" ) << endl
评估如下:
cout << i << (cout << " = Chipotle") << endl
我在这里省略了setw
操纵器,以使代码更易于阅读,这将影响结果中的间距但除此之外没有区别。结果与此操作序列相同:
cout << " = Chipotle"; // the thing in `()` gets evaluated first
cout << i;
cout << cout; // because (cout << " = Chipotle") evaluates to cout
cout << endl;
这正是您在前几行中看到的。 cout
本身打印为0x602208
。之后,你会得到McDonalds
而不是Chipotle
。
如果只在输出表达式的左端编写一次cout
,您将获得所需的输出。
您不必在使用 ?: 运算符编写的 if 条件中再次写入 cout。只需放置要打印的字符串,而无需cout
这是一种更精确和可读的方法。
for( int i = 0; i <= 10; i++ )
{
cout << setw(2) << i << setw(10) ;
if(i<= 5)
{
cout <<" = Chipotle"<<endl;
}
else
{
cout << " = McDonalds" << endl;
}
}
相关文章:
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 正在尝试了解输入验证循环
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 循环后如何继续阅读
- Ardunio UNO解决了多个重叠的定时器循环
- Eigen如何在容器循环中干净地附加矩阵
- 在某些循环内使用vector.push_back时出现分段错误
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 为什么我的for循环不能正确获取argv
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- while循环中while循环的时间复杂度是多少
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 为什么在这个代码结束循环中没有得到结束
- 在基于范围的for循环中使用结构化绑定声明
- 用于C++中带有数组和指针的循环
- 循环中的随机函数
- 是什么阻止DOMTimerCoordinator::NextID进入无休止的循环
- 在循环C++中指定字符串之后,不会打印该字符串