下面代码输出是多少?
#incldue<stdio.h>
mian()
{
int a,b,c,d;
a=10;
b=a++;
c=++a;
d=10*a++;
printf("b,c.d:%d.%d",b,c,d);
return 0;
}
结果是多少,为什么?
问题点数:60、回复次数:18Top
1 楼ykzhujiang(朱朱)回复于 2006-03-13 22:33:51 得分 5
你的代码写得有些错误Top
2 楼ykzhujiang(朱朱)回复于 2006-03-13 22:34:51 得分 0
改正如下
#include<stdio.h>
main()
{
int a,b,c,d;
a=10;
b=a++;
c=++a;
d=10*a++;
printf("b,c,d:%d,%d,%d",b,c,d);
}Top
3 楼ykzhujiang(朱朱)回复于 2006-03-13 22:38:59 得分 5
结果 b,c,d的值分别是10,12和120
++作为后缀的意思是先对改变量进行运算,然后再对改变量加1
所以b=a++的结果就是a先将10付给b,然后自身变为11
++作为前缀的意思是先对自身加1,然后在进行运算
因此c=++a的结果就是a先自加1,然后再将结果付给c,所以c=12
d=10*a++的道理相同,但是要注意一点就是++运算符的优先级高于*,所以结果为120Top
4 楼sosm(小哲)回复于 2006-03-13 22:49:37 得分 5
运算符优先级
一元的+/-最高
*/%次之
二元的+/-低
括号就不说了哈Top
5 楼hai_li(何家干)回复于 2006-03-13 22:54:22 得分 5
10 12 120Top
6 楼bojianyu()回复于 2006-03-13 23:05:21 得分 5
上楼的最后一句话说错了,d中的语句和++的优先级没有关系,还是先执行*再执行++.时刻记住,a++的意思是完成a的其他运算(一步)再执行递增运算Top
7 楼iwantfat(rock)回复于 2006-03-13 23:16:07 得分 2
10 12 120Top
8 楼wangmuqq88(挥着翅膀的尼姑)回复于 2006-03-13 23:24:02 得分 5
欢迎大家加群(C/C++)20641933欢迎大家共同学习交流Top
9 楼systemx(-操!老子从不讲脏话的!阿弥陀佛!-)回复于 2006-03-14 10:35:26 得分 10
偶来注释一下
#include<stdio.h>
main()
{
int a,b,c,d;
a=10; /*a=10*/
b=a++; // 此时a的值仍为10。但在本次运算完成后a的值就是11
c=++a; // ++a 是先加一再运算。所以这里a=11+1=12
d=10*a++; //这里先不管*和++的优先级。因为a++是在运算完成后再加一。所以d的值就是10×12=120
printf("b,c,d:%d,%d,%d",b,c,d);
}
Top
10 楼optimftb()回复于 2006-03-14 12:44:17 得分 2
还搞着方面的游戏啊,哎Top
11 楼ugg(逸学堂(exuetang.net))回复于 2006-03-14 13:31:55 得分 5
int a,b,c,d;
a=10;
b=a++;// b=10,a=10,完成操作后a=11;
c=++a;// c = 12,a=12;
d=10*a++;// d = 10*12=120,完成操作后a=13;
printf("b,c.d:%d.%d",b,c,d);
所以输出为
10,12,120Top
12 楼cthiro123(小米稀饭)回复于 2006-03-14 13:40:08 得分 2
10 12 120Top
13 楼hncw13(13)回复于 2006-03-14 13:56:14 得分 0
10 12 120
注意运算符的优先次序Top
14 楼zzw820626(偶要分,偶要星星)回复于 2006-03-14 14:17:03 得分 0
10 12 120Top
15 楼xugang_2001(幽明天竹)回复于 2006-03-14 16:35:51 得分 0
10 12 120Top
16 楼yuanchuang(元创)回复于 2006-03-14 16:57:51 得分 5
#incldue<stdio.h>
mian()
{
int a,b,c,d;
a=10;
b=a++; //b = 10; a = 11
c=++a; // c = a = 12
d=10*a++; //d = 120; a = 13
printf("b,c.d:%d.%d",b,c,d); // 所以结果是:"b,c.d:10.12"
return 0;
}Top
17 楼yuanchuang(元创)回复于 2006-03-14 18:11:03 得分 2
我如果没有记错的话,printf对多出来的变量舍弃,对少了的变量是没有定义。Top
18 楼iewin(风铃声)回复于 2006-03-14 18:33:40 得分 2
10 12 120Top




