一个C语言问小题 帮忙看看 麻烦详细解释一下
4个回答
展开全部
根据C90和C99的标准规定。
编译器的判定为:表达式中如果存在逻辑运算符,将会是以下的执行过程(以你问题中的表达式为例):
1,&&的情况下,判定&&左边的值是否为真(1),若为真,则继续判定;若为假则直接返回“假”这个结果;
2,||的情况下,需要对表达进行完全解释判定才能得到具体结果。
3,前++和后++。对于前++,在表达式的等号运算符之前就完成了运算结果;而对于后++,则本次运算会持续到等号运算符之后完成,也就是说从下一跳有效语句开始才会完成计算。比如:
a=1;
b=2;
--a&&b--; //此时,a的值已经为0,而b的值还是2
综上,你的代码得到了上述的结果。
输出:a=0 b=1 c=0
编译器的判定为:表达式中如果存在逻辑运算符,将会是以下的执行过程(以你问题中的表达式为例):
1,&&的情况下,判定&&左边的值是否为真(1),若为真,则继续判定;若为假则直接返回“假”这个结果;
2,||的情况下,需要对表达进行完全解释判定才能得到具体结果。
3,前++和后++。对于前++,在表达式的等号运算符之前就完成了运算结果;而对于后++,则本次运算会持续到等号运算符之后完成,也就是说从下一跳有效语句开始才会完成计算。比如:
a=1;
b=2;
--a&&b--; //此时,a的值已经为0,而b的值还是2
综上,你的代码得到了上述的结果。
输出:a=0 b=1 c=0
展开全部
--a为0,所以--a&&b-- 为0 b--不执行, --c执行 为0,所以--a&&b--||--c为0
所以d为0
所以 a=0, b=1, c=0, d=0
所以d为0
所以 a=0, b=1, c=0, d=0
追问
你好 关于这个问题我还想请教你一下 如果&&改为||那么结果会怎样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
--运算符在变量名前则先进行减法运算 ,在变量名后面则在本段语句结束后进行减法运算.
b=0;b经过b--运算后的值为0 (b--)=(1--)
c=0;//--c后c的值改变为0
d=1;//因为a=0,b=0所以a&&b得值为真返回1故d=1
--运算符在变量名前则先进行减法运算 ,在变量名后面则在本段语句结束后进行减法运算.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a=0;b=1;c=0;d=0;
这里耍了个小技巧,--a就是0,再&&(与)就不执行b--了,必然是0,成了0||--c,然后--c为0,d为0;b还是1.
这里耍了个小技巧,--a就是0,再&&(与)就不执行b--了,必然是0,成了0||--c,然后--c为0,d为0;b还是1.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询