问两道C语言题,这两道题考点好像一样,求解析过程。越详细越好!!
#include<stdio.h>voidmain(){inta=1,b=0;printf("%d",b=(a++)+(a++));printf("%d\n",a+b);...
#include<stdio.h>
void main()
{
int a=1,b=0;
printf("%d",b=(a++)+(a++));
printf("%d\n",a+b);
}
答案为:2,5
另一题为填空题:
定义int a=5,b; , 则执行表达式b=++a*--a之后,变量b的值为?
答案为:25. 展开
void main()
{
int a=1,b=0;
printf("%d",b=(a++)+(a++));
printf("%d\n",a+b);
}
答案为:2,5
另一题为填空题:
定义int a=5,b; , 则执行表达式b=++a*--a之后,变量b的值为?
答案为:25. 展开
2011-08-19
展开全部
第一题:
a初始为1,b为0; 输出时:(a++)要先将a带入计算,后再算a++的值,
所以执行完:printf("%d",b=(a++)+(a++)); 后
b=2,a=3
再执行: printf("%d\n",a+b);
结果当然为:2
所以输出时结果为2,5
第二题:*的优先级比++与--高
所以先算*,再算++与--
所以结果为:25
a初始为1,b为0; 输出时:(a++)要先将a带入计算,后再算a++的值,
所以执行完:printf("%d",b=(a++)+(a++)); 后
b=2,a=3
再执行: printf("%d\n",a+b);
结果当然为:2
所以输出时结果为2,5
第二题:*的优先级比++与--高
所以先算*,再算++与--
所以结果为:25
追问
好像是++的优先级高,呵呵~~~
追答
++与--的优先级在第二级,*(乘)在第三级,你说的可能是*(取值运算符)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
++i和--i,称为前置运算,i++和i--,称为后置运算.
a++ 先使用a值,后加1
++a 先加1,后使用a值
b=(a++)+(a++)的意思是b=a+a;a++;a++;此时b=2,a=3,所以a+b=5,
第二个
b=++a*--a的意思是++a;--a;b=a*a;a的值自增自减后又变为5,5乘5是25
a++ 先使用a值,后加1
++a 先加1,后使用a值
b=(a++)+(a++)的意思是b=a+a;a++;a++;此时b=2,a=3,所以a+b=5,
第二个
b=++a*--a的意思是++a;--a;b=a*a;a的值自增自减后又变为5,5乘5是25
追问
你这个前置运算与后置运算的观点好新颖啊,我怎么没听说过呢?课本上也没有啊??
追答
概念是从课本上抄的,我简化了,省去了一些汉字,我怕你不爱看.
c语言程序设计教程 你也可以叫前缀后缀
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a=1;b=a++;执行后a=1,b=2。下次使用a时才变为a=2
a=1;b=++a;执行后a=2,b=2。a先变为2再被使用
printf("%d",b=(a++)+(a++));所以执行后b=2,a=1,注意此处执行了两次a++。下次用a时a=3
所以printf("%d\n",a+b);输出5。
第二题你看上面的回答吧。
a=1;b=++a;执行后a=2,b=2。a先变为2再被使用
printf("%d",b=(a++)+(a++));所以执行后b=2,a=1,注意此处执行了两次a++。下次用a时a=3
所以printf("%d\n",a+b);输出5。
第二题你看上面的回答吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先,你要搞清楚a++和++a的不同,在b=(a++)+(a++)中,先执行b=a+a,b=1+1=2,在执行那两个a++,a=3,后一个a+b=2+3=5;
第二题:乘法的优先级是高于加减法的,所以先算a*a就是25了
第二题:乘法的优先级是高于加减法的,所以先算a*a就是25了
追问
++是自加运算,不是加减法。应该是++的优先级高。呵呵~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为 a++ 是先取值, 后+1
printf("%d",b=(a++)+(a++));
以上计算时, a取值为1, 因此 b为 1+1=2, a本身增加了两个为3
printf("%d\n",a+b);
a+b=3+2 =5
b=++a*--a
的值应该为 24, 而不是25
printf("%d",b=(a++)+(a++));
以上计算时, a取值为1, 因此 b为 1+1=2, a本身增加了两个为3
printf("%d\n",a+b);
a+b=3+2 =5
b=++a*--a
的值应该为 24, 而不是25
追问
可是书上的答案给的是25啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询