CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

奇怪的小问题?

楼主caianying(我爱代码)2005-11-18 16:31:14 在 C/C++ / C++ 语言 提问

#include   <iostream.h>  
   
    main(){  
  int   a[5]={1,2,3,4,5};  
  int   *p=a;  
  cout<<*p<<"   ";cout<<*p++;  
  }                                                       为什么结果是   1     1  
   
   
  #include   <iostream.h>  
   
    main(){  
  int   a[5]={1,2,3,4,5};  
  int   *p=a;  
  cout<<*p<<"   "<<*p++;  
  }                                           为什么结果是2   1           请大家2个都解释下  
  问题点数:10、回复次数:6Top

1 楼bm1408(向va_list学习~不用VC好多年~)回复于 2005-11-18 16:36:48 得分 2

main(){  
  int   a[5]={1,2,3,4,5};  
  int   *p=a;  
  cout<<*p<<"   ";cout<<*p++;  
  }        
   
  这个没有什么好说的,就是1,1,  
  *p++是在使用后再加1的,Top

2 楼code8238(二进制动物)回复于 2005-11-18 16:41:37 得分 2

cout<<*p<<"   ";cout<<*p++;  
  这是两句话,值分别压栈,压栈之后p的值才变化  
  cout<<*p<<"   "<<*p++;  
  这是一句话,后面的p的值先压栈,压栈之后p的值+1,再将已经变化的p(前面的)压栈Top

3 楼eternall(逍遥)回复于 2005-11-18 16:51:44 得分 2

谁能解释一下第二个?Top

4 楼lujianping(lujianping)回复于 2005-11-18 16:57:56 得分 2

简单得问题,C语言得标准就是一个左入栈的,  
  cout   <<   *p   <<   "   "   <<   *p++   ;  
  执行的顺序是*p++;  
      *p   =   1   ;   p   ++   ;  
  然后执行*p   =   2;  
  这样,运行的结果就是2   ,   1   了。Top

5 楼code8238(二进制动物)回复于 2005-11-18 16:58:37 得分 2

<<操作符的参数是从右向左压栈的Top

6 楼huwei001982(凶猛的小狗)回复于 2005-11-18 17:20:29 得分 0

压栈的顺序,   先执行   *p++,   然后p就指向第二个元素   2  
   
  第一个没什么说的  
  Top

相关问题

  • 奇怪,奇怪
  • 奇怪,奇怪!
  • 奇怪奇怪???
  • 奇怪!奇怪
  • 奇怪奇怪...........?????...........
  • 小小的问题,奇怪的现象!
  • 一个奇怪的小问题
  • ***一个奇怪的小问题!!
  • 一个奇怪的小问题
  • 奇怪!奇怪!真奇怪!!!

关键词

  • cout
  • main

得分解答快速导航

  • 帖主:caianying
  • bm1408
  • code8238
  • eternall
  • lujianping
  • code8238

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo