一件奇怪的事情
来源:互联网 发布:keynote mac 下载 编辑:程序博客网 时间:2024/04/29 12:37
一件奇怪的事情
今天在看C++程序的时候,写了一个小程序,但是程序的结构很让我困惑,在两个编译系统上竟然出现了两个结果.
下午,我写了如下的小程序:
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int f(int,int);//说明被调用子函数的形式参数的求值顺序是从右向左
void main()
{
int i=3;
cout << f(i,i++) << endl;
cout << f(i,++i) << endl;
cout << f(i++,i) << endl;
cout << f(++i,i) << endl;
}
int fun(int a)
{
return a;
}
int f(int a,int b)
{
int c;
if(a>b)
c=0;
else
if(a<b)
c=1;
else
c=2;
return c;
}
但在VC6.0的运行结果是:
2
2
2
0
我很吃惊,不知道为什么第一个的结果竟然是2.安理说,被调用子函数的形式参数的值的计算应该是自右向左的,那么i++,这个表达式的结果是3,而i的值自增后为4.所以子函数的两个参数应该是(4,3)才对啊!所有应该返回0.
后来我去请教同学,同学在他的电脑C++ Builder上运行的结果是:
0
2
2
0
让我非常惊讶,为什么两个编译环境会得到两个不同的结果呢.希望知道的朋友能够给予帮助.
- 一件奇怪的事情
- vs2005下一件很奇怪的事情
- 一件痛苦的事情
- 不爽的一件事情
- 奇怪的一件事情linux系统变为read-only file system
- 一件很有意思的事情
- 一件事情引发的思考
- 2014年要做的一件事情
- 记一件不大不小的事情
- 奇怪的事情之uboot
- 关于电脑的奇怪事情
- 学会遗忘是一件很容易的事情
- 从众真是一件很奇异的事情
- 爱是一件令人卑微的事情
- 最近最开心的一件事情
- 装ubuntu碰到一件BT的事情
- 昨天亲身经历了一件灵异的事情
- 眼前急需考虑的一件事情
- 身份证最后一会校验码生成算法
- 使用 ATL Server 创建 XML Web services
- GGB0/OB28/OKC7/GGB1/OBBH/OKC9 FICO增强
- 十个你没听过的网站
- List和ArrayList的区别(转载自他人的文章,作为笔记学习,呵呵)
- 一件奇怪的事情
- 社交中,你不能不知道的29件事
- From now on,I will bring up my sprit!
- 读书笔记:C#高级编程&.net 3.0(部分一)
- Linq Order操作
- 杂七杂八——使用LINQ检索重复值
- linux注册表+快捷健+tracker
- linux常用命令
- VC经验技巧:标题栏、按钮、菜单等。