int a=10,b=20,c=30,d; d=++a<=10||b-->=20||c++; printf("%d %d %d %d\n",a,b,c,d);求高手分析此程序段

本人表示不懂对结果不理解... 本人表示不懂
对结果不理解
展开
 我来答
loyoy
2013-03-31 · TA获得超过529个赞
知道小有建树答主
回答量:464
采纳率:0%
帮助的人:358万
展开全部
主要运算部分:d=++a<=10||b-->=20||c++;

首先执行++a<=10||b-->=20,a自增1后为11,则++a<=10为假,b为20,则b-->=20为真(b的自减运算在之后执行,故b的输出值将会是19)
至此++a<=10||b-->=20的结果为真,程序不再继续执行||c++的内容,故c的值不发生变化
最终输出结果为 11 19 30 1
追问
那这段程序的结果呢:
int i=8,j=10;
printf("%d,%d,%d,%d",i,j,++i,j++);
追答
9,10,9,10
建议自己编译运行
susan_sht521
2013-03-31 · TA获得超过186个赞
知道小有建树答主
回答量:117
采纳率:0%
帮助的人:66.7万
展开全部
结果是a=11,b=19,c=31,d=1吗?
++a,a=10+1=11,a<=10为假,继续判断
b--后b=19,>=20为假,继续判断
c++后c=31,为真,所以d=1
所以输出结果为11,19,31,1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dsdwd112
2013-03-31
知道答主
回答量:56
采纳率:0%
帮助的人:15.4万
展开全部
定义了a=10,在a++时a完成自加。所以a是11.++a是先加再比较。所以++a<=11为假。b在b--时完成自减。b为19.||表示或。b--大于等于20为真。因为b--是先比较在减的。所以后面的不运行了。所以d为真为1了。c不变。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2013-04-01
知道答主
回答量:75
采纳率:0%
帮助的人:24.6万
展开全部
a=11;
b=19;
c=31;
d=1;
d=........;这个表达式为真
++a;的意思是先+1;再运算表达式,a++;相反
||表示或运算,只要表达式中有真就为真,全假为假
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
15941181484
2013-04-01
知道答主
回答量:23
采纳率:0%
帮助的人:12.1万
展开全部
这程序主要的是看运算符的优先级,知道优先级就能看出来了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式