c语言程序题目 自增自减

#include<stdio.h>
main()
{int a=5,b=4,x,y;
x=a++*a++*a++;
printf("a=%d,x=%d\n",a,x);
y=--b*--b*--b;
printf("b=%d,y=%d\n",b,y);
}
输出什么啊

自增自减是分两种的,一种是前坠(++i,--i),一种后缀(i++,i--),两种有很大的区别,前缀自增自减是先运行本身,后运行其他.后缀自增自减是先运行其他在运行本身.
列举两个例子:

a=1;
a=(a++)+(++a)
最后a的结果是4;
分析,第一个a++ 是先不运行本身的字加的,结果是1.后一个++a是先运行自身加加,所以结果是2.结果的最后要有个自身的加加,所以结果是4.
a=1;
a=(++a)+(a++)
最后结果是5;
分析,第一个++a是先运行本身的自加,所以a=2.而后一个a++里面的a的值是2,所以相加的结果是4,结果的 最后要有一次本身的自加所以结果是5.
a=1;
a=(a++)+(++a)+(a++)
结果是7;
分析,第一个a++也是不运行本身的自加,结果是1.第二个++a是要运行本身的自加所以结果是2.第三个a++,由于受第二个自加的影响a本身的值也变成2了.运行结果的最后,由于有两次的本身自加,所以最终的结果是7.

相信通过以上三个例子你会对这个自增自减了解很多的,自减的规则和自加是一样的,所以也就不在举例子了.
你的问题中的x=a++*a++*a++;
先x=5*5*5,得x=125,a先不运算自增;后a=5+1+1+1,得a等于8,a才运行自增。
得a=8,x=125
而y=--b*--b*--b;
先b=4-1-1-1=1,由于--是在前面的,先运行自减,得b=1,后y=1*1*1=1。
不过貌似是不可以写成b=--b*--b*--b,会出错,我的C++得到的y是4.......
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-11
a=8,x=125
b=1,y=1
分析过程:
a自增了三次,5+3=8,所以a=8;
b自减了三次,4-3=1,所以b=1;
x=a++*a++*a++ 相当于 x = 5*5*5 = 125;
y=--b*--b*--b 相当于 y = 1*1*1 = 1;本回答被网友采纳
第2个回答  2010-11-11
这个应该是依赖于编译器的判断。。。。没有标准的。。
第3个回答  2010-11-11
给新手出这种题目的专家教授或者任课教师都应该枪毙

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网