小程序,大困惑

whillcoxdennis 2009-03-23 10:45:59
#include<iostream>
using std::cout;
int main()
{
int i=0;
cout<<i++<<i++<<i++<<endl;
return 0;
}
为啥输出为210呢?
我想像的是012撒~

#include<iostream>
#include<string>
using std::string;
using std::cout;
using std::cin;
using std::endl;

int main()
{

string word;
while(cin>>word)
cout<<word<<endl;//结束只能应用contrl+z
return 0;
}
还有此小程序,请输入带空格的一句话 eg:"wo men dou shi hunman"
输出为啥会出现换行呢?即输出为
wo
men
dou
shi
human
能否给详细说下cout输出流呢?
...全文
135 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
operatingtuzi 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 whillcoxdennis 的帖子:]
#include <iostream>
using std::cout;
int main()
{
int i=0;
cout < <i++ < <i++ < <i++ < <endl;
return 0;
}
为啥输出为210呢?
我想像的是012撒~

这和函数参数进栈的顺序有关,因为<<实际是一个函数,入栈的时候先是最右边的 从右向左
#include <iostream>
#include <string>
using std::string;
using std::cout;
using std::cin;
using std::endl;

int main()
{

string word;
while(cin>>word)
cout < <word < <endl;//结束只能应用contrl+z
return 0;
}


这个是因为输入string的时候以空格为间隔,cin认为你输入空格了 一个string就结束了[/Quote]
mengde007 2009-03-23
  • 打赏
  • 举报
回复
cout是从右往左读入数据的,然后由左至右输出。
lbjfeng 2009-03-23
  • 打赏
  • 举报
回复
因为cout输出的时候,是从右到左边的……
  • 打赏
  • 举报
回复
int main()
{

string word;
while(cin>>word)
cout < <word < <endl;//结束只能应用contrl+z
return 0;
}

还有此小程序,请输入带空格的一句话 eg:"wo men dou shi hunman"
输出为啥会出现换行呢?即输出为

流>>string的操作,默认遇到空格就完成一次,读文件流也一样。
xmrforever 2009-03-23
  • 打赏
  • 举报
回复
1.感觉有点像栈的操作方式,
2.你在输出的时候是一个循环while(cin>>word)我想应该是这里的原因
lizhizhe2000 2009-03-23
  • 打赏
  • 举报
回复
为啥输出为210呢?
我想像的是012撒~

因为cout的<<是从右向左计算的

因为cout的<<遇到空白字符就认为这是一次输入结束的
测试菜鸟 2009-03-23
  • 打赏
  • 举报
回复
学习 up
downmooner 2009-03-23
  • 打赏
  • 举报
回复
getline(cin,word)

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧