文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>i++与++i 误区

i++与++i 误区

时间:2010-09-02  来源:hecangbo

首先,我们选择的平台是Vc6.0,如果使用vs2005就没必要讨论这个问题了。 例1 、#include<stdio.h>
void main()
{
int i=0;
printf("%d %d %d",++i,++i,++i);
}
输出为3 2 1
原因是,如果一个函数有多个参数,比如
int fun (int a, int b, int c);
调用时,总是从最后一个参数开始压栈。 也就是c先进栈,其次是b,最后才是a。因此
先计算最后一个参数(即最右一个++i),压入1,以此类推,再压入2,3和字符串"%d,%d,%d"的首地址。
所以 , 程序的输出是 3,2,1

可是 #include<stdio.h>
void main()
{
int i=0;
printf("%d %d %d",i++,i++,i++);
}
的输出?
我用VC结果是0 0 0,而不是是2 1 0
  例2、 #include <stdio.h>
#include <stdlib.h>
#define F(x) (x+x+x)
main()
{
int i=2;
 printf("%d\t%d",i,F((i++))); 
printf("\t%d\n",i);
}
  答案:2        6         5 解释:其中f((i++))表示的是i++ + i++ + i++ 因为先求i相加,再i++,因此答案比较好解释,然而下面一题:   例3、 #include <stdio.h>
#include <stdlib.h>
#define F(x) (x+x+x)
main()
{
int i=2;
 printf("%d\t%d",i,F((++i))); 
printf("\t%d\n",i);
}
答案:5        13         5 解释:其中f((i++))表示的是++i + ++i + ++i,因为c是从右向左计算机,就表示成了{++i + (++i + ++i)},首先计算机小括号内,最后一个++i表示此时i的值为3,中间再以3为基值,++i 的值就为4,由于i是变量,小括号为表示此时i的值相加4+4为8,再与前面一个++i相加,即5+8=13 注:只是函数,printf从右向左,等式是从左向右,别搞混淆了! 注:此文具有代表性,仔细一下,能让人豁然开朗。
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载