一个C语言问小题 帮忙看看 麻烦详细解释一下

a=1,b=1c=1,d=1d=--a&&b--||--ca,b,c,d的值分别为多少?... a=1,b=1c=1,d=1
d=--a&&b--||--c
a,b,c,d的值分别为多少?
展开
 我来答
xz宏定义
2013-01-08 · TA获得超过1029个赞
知道小有建树答主
回答量:1621
采纳率:100%
帮助的人:230万
展开全部
根据C90和C99的标准规定。
编译器的判定为:表达式中如果存在逻辑运算符,将会是以下的执行过程(以你问题中的表达式为例):
1,&&的情况下,判定&&左边的值是否为真(1),若为真,则继续判定;若为假则直接返回“假”这个结果;
2,||的情况下,需要对表达进行完全解释判定才能得到具体结果。
3,前++和后++。对于前++,在表达式的等号运算符之前就完成了运算结果;而对于后++,则本次运算会持续到等号运算符之后完成,也就是说从下一跳有效语句开始才会完成计算。比如:
a=1;
b=2;
--a&&b--; //此时,a的值已经为0,而b的值还是2
综上,你的代码得到了上述的结果。
输出:a=0 b=1 c=0
左左强强峰峰
2013-01-08 · TA获得超过441个赞
知道小有建树答主
回答量:481
采纳率:100%
帮助的人:139万
展开全部
--a为0,所以--a&&b-- 为0 b--不执行, --c执行 为0,所以--a&&b--||--c为0
所以d为0

所以 a=0, b=1, c=0, d=0
追问
你好 关于这个问题我还想请教你一下  如果&&改为||那么结果会怎样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
传说中的土鳖
2013-01-08 · 超过27用户采纳过TA的回答
知道答主
回答量:95
采纳率:33%
帮助的人:41.8万
展开全部
a=0;//--a后a的值改变为0
b=0;b经过b--运算后的值为0 (b--)=(1--)
c=0;//--c后c的值改变为0
d=1;//因为a=0,b=0所以a&&b得值为真返回1故d=1
--运算符在变量名前则先进行减法运算 ,在变量名后面则在本段语句结束后进行减法运算.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
l1329637319
2013-01-08
知道答主
回答量:6
采纳率:0%
帮助的人:7506
展开全部
a=0;b=1;c=0;d=0;
这里耍了个小技巧,--a就是0,再&&(与)就不执行b--了,必然是0,成了0||--c,然后--c为0,d为0;b还是1.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式