cout 输出机制

清水迎朝阳
博客专家认证
2008-10-26 03:29:35
问题:
int *p=new int[2];
p[0]=0;
p[1]=2;
1) cout<<*p<<*p++<<endl; 输出00 理解

2) cout<<*p<<*p++<<*p++<<endl; 输出000

3) cout<<*p<<*p++<<*p<<endl; 输出002

4) cout<<*p<<(*p)++<<<<endl; 输出10


5) cout<<*p<<(*p)++<<*p++<<*p<<endl; 输出1002


以上5个测试均为vs2005单独执行,不知道有谁可以解释下cout<<输出机制如何, 并解释下后面几种情况为什么是输出这个结果
...全文
138 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
l176266956 2008-10-27
  • 打赏
  • 举报
回复
问题有点歧义,建议发整个程序出来!
moolf 2008-10-26
  • 打赏
  • 举报
回复
只要把那几个指针弄明白了就足够了!!
镜机 2008-10-26
  • 打赏
  • 举报
回复
没必要深究。
大熊猫侯佩 2008-10-26
  • 打赏
  • 举报
回复
各个编译器可能实现不同,VC 8.0 下:

cout<< 经过漫长的调用,最终走如下路径:

fputc->_putc_nolock->_write->_write_nolock->WriteFile

最后会调用win32 api WriteFile ,若用C来写的话...
帅得不敢出门 2008-10-26
  • 打赏
  • 举报
回复
看汇编代码最实在.
这种东西编译器相关的.
没必要深究 现实中避免这种代码.
  • 打赏
  • 举报
回复
你知道执行顺序么?

64,654

社区成员

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

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