有两个程序:
一:
#include<stdio.h> main() { int sum=1;
while (sum<=5) { sum++;
}
printf("sum=%d\n",sum); return 0 ; }
二:
#include<stdio.h> main() { int sum=1;
while (sum<=5) { ++sum;
}
printf("sum=%d\n",sum); return 0 ; }
这两个程序唯一的不同的地方是 sum++ 和 ++sum ,sum++我知道是先给sum付1,然后在下次付值的时候再给第一次付的值加1;++sum是先给它付一个1+1的值,在下次付值的时候保持原值不变,但是经过我的上机实验发现两个程序结果都是一样的!说明++sum也能循环,但是我不知道为什么,而且还和我现在的想法还有抵触,请大家多指点指点我这个小才鸟!多谢了!
----------------解决方案--------------------------------------------------------
int get(int c)
{
int d=0;
while(c<5)
{
// c++;
d=c++;
}
return d;
}
void main()
{
int sum=1,b=0;
int e;
while(sum<5)
{
b=++sum;
}
e=get(1);
printf("%d,%d",b,e);
}
返回值是5,4,道理也大概是这样把!!
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
大家都没有搞清楚++ ,--的用法啊!!
我来解释解释――应该对的吧!!
++,--他们的运算规则是:在一个表达式中出现++,--那么按照大家都知道的处理++,和――的值。
但是有一点最重要的规则大家一般都不知道,我记得好像是一本美国人写的书Begining C++ the Complere language中说过,当然我看的是中译本!!这条规则就是计算训序各个编译其实不同的!!――所以各位如果使用++,--的时候一定要注意不要在一个语句中多次对同一个变量自加自减,也不要将他们复制给自己!!
我自己总结的――就是对于++,--作为后缀的话,运算就不同了,它们是先计算完自加自减所在的这一级整个表达式的值然后再进行自加只减!!
请看看我的程序,如果大家不去编译运行,结果将超出大家的想象的!!
#include<stdio.h>
main()
{
int n=5,s;
s=++n*3+ ++n*5;//中间空格不能删除
printf("s=%d\tn=%d\n",s,n);
}
猜猜看会输出什么!!
[此贴子已经被作者于2004-11-04 10:52:02编辑过]
----------------解决方案--------------------------------------------------------
由于在C中+预算符的计算训序没有指定就是说可能有些人的结果是53或者51,还有可能为56,53为先计算+左边的,51说明先计算+右边的,而56说明同时计算+两边的,有趣吧!!!
在VC6.0中输出:s=53 n=7
TC3.0中输出:s=56 n=7
这说明在VC是从左到右的!!
好了,按照上面的我们可以分析这个程序来验证了!!
#include<stdio.h>
main()
{
int n=5,s;
s=n++*3+n++*5;//中间空格不能删除
printf("s=%d\tn=%d\n",s,n);
}
----------------解决方案--------------------------------------------------------
上一贴子输出结果为:40,7(VC和TC中一样!!)
大家有没有兴趣做这个!!
i=10; i=i/++i; i=i/i++;
这个将会很有趣的vc和tc中输出:第一个:1第二个:2哈哈。
----------------解决方案--------------------------------------------------------
十分感谢大家!
你们的提示对我这个初学者很有帮助!
----------------解决方案--------------------------------------------------------