已知:a=b=c=1且a,b,c均为int型变量,执行以下语句:++a||++b&&++c;则变量a的值是多少,b的是多少,

已知:a=b=c=1且a,b,c均为int型变量,执行以下语句:++a||++b&&++c;则变量a的值是多少,b的是多少... 已知:a=b=c=1且a,b,c均为int型变量,执行以下语句:++a||++b&&++c;则变量a的值是多少,b的是多少 展开
 我来答
百度网友3037ad2
2010-12-13
知道答主
回答量:5
采纳率:0%
帮助的人:3.7万
展开全部
1).首先我们来看运算的优先级:a:在这三个运算符中优先级的顺序是++第一,
为单目运算符,结合方式是从右向左;
b:第二个就是区分&&和||了,他们都是双目运算符,
结合方式是从左向右,但是&&的
优先级要高于||;
2).虽然这三个运算符是有优先级的,但是在特殊情况下还不是按其优先级来算的,比如你提问的这题就是典型的例子,会出现短路现象。
3). ++a||++b&&++c;中先划分为两个部分++a一部分, ++b&&++c为 一部分,即可看成是(++a)||(++b&&++c)先算左边++a,a从1加到2 ;左边逻辑值就是1了,就不需要往下运算了,那么b,c的值就会不变仍然为1.这就是我提到的短路现象。
4).所以最后的结果就是a=2,b=1,c=1;
5)代码如下
#include<stdio.h>
main()
{int a,b,c;
a=b=c=1;
if(++a||++b&&++c)
printf("%d,%d,%d\n",a,b,c);
}
6).你可以结合我所说的,在TC或者VC下调试一下;可惜我等级不够,要不然把结果图片也放上去,就这样吧。祝你好运!
百度网友c73d9c7
2010-12-10 · TA获得超过2916个赞
知道大有可为答主
回答量:658
采纳率:0%
帮助的人:953万
展开全部
&&、||、++的优先级顺序是|| > &&> ++,所以程序先执行||,首先看左侧执行完++a后值是2,逻辑值为真,可以判断计算是最终结果是1,不再计算左侧的&&运算了。a=2,b=1,c=1
你可以自己运行一下试试,希望回答对你有帮助!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d958f75
2010-12-10 · TA获得超过2752个赞
知道小有建树答主
回答量:1162
采纳率:0%
帮助的人:720万
展开全部
应该是8.
循环9次,k的值从0到8.
字符串的结束符标志为'/0'
当遍历字符串S到'/0'时,循环结束。
char s="a \045 + 0 + 4 5 \’b"
\045表示减号
\'表示单引号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ziyang64
2010-12-10 · TA获得超过962个赞
知道小有建树答主
回答量:529
采纳率:0%
帮助的人:814万
展开全部
a=2,b和c不变,因为 || 前面为真就不会计算后面部分了,所以只计算了++a。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
804014586
2010-12-10
知道答主
回答量:30
采纳率:0%
帮助的人:24.4万
展开全部
a = 2;
b = 2;
c = 2;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式