
int i=1,j=1,k=1; (i++,--j) && ++k;为什么输出i,j,k结果是2,0,1而不是2,0,2?
4个回答
展开全部
(i++,--j)&&++k
这句语句首先执行的是前面那个括号的内容,也就是先执行i++,后执行--j,而因为i++,--j是一个逗号表达式,所以这个表达式的值就是后面那个表达式的值,也就等同于
(--j)&&++k
但是因为--j已经等于0了,对于&&这个运算符有一个规则,就是当前面的那个表达式值为0的话,后面那个表达式就不编译了,其实也很好理解,因为当前面那个表达式值为0以后,后面那个表达式的值无论是0还是1,结果都是0,所以后面那个++k就不执行了
这句语句首先执行的是前面那个括号的内容,也就是先执行i++,后执行--j,而因为i++,--j是一个逗号表达式,所以这个表达式的值就是后面那个表达式的值,也就等同于
(--j)&&++k
但是因为--j已经等于0了,对于&&这个运算符有一个规则,就是当前面的那个表达式值为0的话,后面那个表达式就不编译了,其实也很好理解,因为当前面那个表达式值为0以后,后面那个表达式的值无论是0还是1,结果都是0,所以后面那个++k就不执行了
展开全部
(i++,j--)是逗号表达式,看后面的--j,
--j=0,
而&&操作自左向右进行,只要左边的项为0,整个表达式也就为0,
并且不会进行后面的表达式。所以,k还是1
--j=0,
而&&操作自左向右进行,只要左边的项为0,整个表达式也就为0,
并且不会进行后面的表达式。所以,k还是1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
++k是先加1再引用(也就是在接下来的词句里引用的k是从“int i=1,j=1,k=1;”里加了1的k)。 就是执行啦,所以k+1了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(i++,--j) && ++k;因为--J后,退出,没有执行下一语句,++K。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询