按老师将的||出现,那么右边的表达式就不参与运算||

按老师将的||出现,那么右边的表达式就不参与运算||

int i=9,j=8,k=6,m=10;
  if((i>j)||m<k++){
   k--;}
   else {
    k++;}

为什么这里面的k参与了2次运行呢

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

4回答
品牌老鸨 2017-12-24 23:25:24

int i=9,j=8,k=6,m=10;
  if((i>j)||m<k++){
   k--;}
   else { 
    k++;}

9>8||10<6;7--;k==6

Tender10 2017-11-20 09:50:49

1、第一次你贴出的代码就是执行一次,因为短路或运算,只要前面的条件成立了就不会在执行后面的语句。

2、第二次你贴出的代码运行结果为什么等于8呢,那是因为你加了一个!非运算,首先i>j即9>8是正确的,而加上一个非运算后,是不是意味着!(i>j)就是不正确的,而非运算的条件是必须要有一个成立才是正确的,第一个条件不正确,那当然还要继续执行后面的m<k++判断啦。

3、短路运算符是先判断第一个条件,如果第一个条件为真,那么就不需要判断后面的条件了。或运算是必须要一个为真才可以,你第一个不成立,那肯定要在判断第二个条件啊,不是说使用短路或运算就一定只执行一次。

提问者 王者非凡0 2017-11-19 20:42:44

k的值是8,如果参与一次运算就是7

Tender10 2017-11-19 10:31:41

一次啊,你可以输出看看最后k的值是多少啊。

  • 提问者 王者非凡0 #1
    int i=9,j=8,k=6,m=10; if(!(i>j)||m<k++){ k--;} else { k++;} 前面编程代码少了一个!,你输这个代码k就是8,而不是7,既然短路符出现了,那么后面的是不应该参与运算的,而这里面k两次++,最后等于8.
    2017-11-19 20:46:51
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师