int i=-1,j=2,k; do{ k=++i&&--j;i++; }while(k);printf("%d,%d",i,j) 请问为什么输出1,2?
4个回答
展开全部
因为执行的顺序是这样的,K=++I 计算出K=0,因为0&&--J必须两个条件同时成立是才为真,所以,第一个条件为假,第二个条件根本不执行,直接返回假,所以--J根本没执行,然后执行了I++,因为K=0了,所以跳出循环,这时I=1,而J依然=2
追问
感觉你的回答不正确呢 因为执行的顺序是这样的,K=++I 计算出K=0 这就错了
追答
你觉得哪里错了呢?因为K=0了,退出循环了,才会打印出1和2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先执行 ++i 此时 i=0 再 i&& 但因为 i=0 所以 不继续判断 后面语句 故--j 不执行 且k=0 接着 ++i 此时 i=1 k=0 所以跳出循环 ,最后 i=1,j=2
追问
谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
搞明白两个问题就明白了。
赋值语句恒为真。
&&操作符是短路运算,就是说比如:x&&y 如果x为真,就没必要计算下去了,整个式子恒为真。
赋值语句恒为真。
&&操作符是短路运算,就是说比如:x&&y 如果x为真,就没必要计算下去了,整个式子恒为真。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询