一道关于C语言的题目

执行下列语句后a的值为(),b的值为()。inta,b,c;a=b=c=1;++a||++b&&++c;A)错误1B)22C)21D)11答案C为什么?... 执行下列语句后a的值为( ),b的值为( )。
int a, b, c;
a=b=c=1;
++a|| ++b && ++c;
A) 错误 1     B) 2 2     C) 2 1     D) 1 1
答案C 为什么?
展开
 我来答
CT_36
2012-08-07 · TA获得超过482个赞
知道小有建树答主
回答量:695
采纳率:0%
帮助的人:192万
展开全部
我只能说这种题目都是2的,根据每个编译器的不同运算次序是不同的,出来的答案无法保证,一般不使用复杂的自加自减运算,按左右顺序的话答案是C没错正如楼上2为讲的先做++a然后就不算了,编译器不同答案不同
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Computest
2012-08-07
知道答主
回答量:56
采纳率:0%
帮助的人:12.9万
展开全部
|| 为短路或(| 为逻辑或),短路或的特点是当前面条件为真时整个句子必然为真,所以不再判断后面的条件是否成立(后面的条件直接跳过),短路或在程序执行过程中可以节省一部分时间,所以很常用。
所以题中++b没有执行,所以答案为C
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
明德惟馨110
2012-08-07 · 超过20用户采纳过TA的回答
知道答主
回答量:126
采纳率:0%
帮助的人:54.4万
展开全部
++a|| ++b && ++c
在上述逻辑表达式中计算机执行++a后没有继续执行++b
所以a=a+1 而b还是b=1;

计算机之所以后面没有执行,因为在逻辑表达式求解时,只有在必须执行下一个逻辑运算符才能求出表达式的解。
该题目中只有++a为假(0)时才执行++b,因为++a为真所以对于“||”左边为真右面就不用执行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2012-08-07 · TA获得超过729个赞
知道小有建树答主
回答量:1123
采纳率:0%
帮助的人:892万
展开全部
首先a,b,c都为1
然后计算++a|| ++b && ++c;
先算++a,值为2,也就是为真
所以不用运算++b && ++c
得到结果是a为2,b和c都为1

这涉及到或运算和与运算的知识点,百度下就知道了
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1fc36d4
2012-08-07 · TA获得超过3131个赞
知道大有可为答主
回答量:1497
采纳率:100%
帮助的人:1838万
展开全部
a=b=c=1;执行完后a=1,b=1
++a||++b&&++c 这里先执行++a使得a=2了,然后这个表达式已经成立,不会再执行后面的||++b&&++c了,所以a=2,b=1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式