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

还是没弄清楚,请shornmao和各位再看一下

楼主ck_chuyun(我也不是啥好鸟)2002-07-08 17:42:24 在 C/C++ / C语言 提问

shornmao兄,你说C++标准保证函数调用按照从左到右的顺序进行,但是表达式的求值顺序没有规定,是实现相关的,我还是没弄清楚。  
  void   fun(int   a,int   b)  
  {  
      cout<<a<<endl;  
      cout<<b<<endl;  
  }  
  void   main()  
  {  
      int   a=2;  
      fun(a,a++);  
  }  
  程序的运行结果是2、2,而按照以前谭浩强的那本c语言教程,应该是3、2才对。  
  能不能再解释一下这个程序的输出结果???  
  我想弄明白不同的原因。。 问题点数:20、回复次数:4Top

1 楼xcopy(xcopy)回复于 2002-07-08 17:51:51 得分 5

你的主程序等价于  
  void   main()  
  {   int   a=2;  
  fun(a,a);  
  a=a+1;  
  }  
  明白否?Top

2 楼ck_chuyun(我也不是啥好鸟)回复于 2002-07-08 17:55:10 得分 0

原理???????Top

3 楼sx_enter(菜虫→→→★★★★★)回复于 2002-07-08 18:04:14 得分 5

表达式a++的值是a未加之前的值!Top

4 楼sx_enter(菜虫→→→★★★★★)回复于 2002-07-08 18:07:59 得分 10

先执行函数fun()把a++,a的值压栈,然后再计算a++.  
  可能和编译器有关.Top

相关问题

  • 各位帮忙看一下!
  • 各位帮忙看一下!
  • 各位帮看一下?
  • 各位帮忙看一下
  • 奇怪,各位请看一下
  • 各位兄弟帮忙看一下
  • 各位,請幫忙看一下!?
  • 各位帮我看一下,小问题。
  • 各位老大,帮忙看一下。
  • 各位win2000安装高手看一下$$$

关键词

  • shornmao
  • 没弄清楚
  • 顺序

得分解答快速导航

  • 帖主:ck_chuyun
  • xcopy
  • sx_enter
  • sx_enter

相关链接

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

广告也精彩

反馈

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