首页 > 试题广场 >

已知int i=0,x=0;,在下面while语句执行时循环

[单选题]
已知int i=0,x=0;,在下面while语句执行时循环次数为()

while (!x && i< 3) {
    x++;
    i++;
}

  • 4
  • 3
  • 2
  • 1
已知   int i=0,x=0;
while( !x && i< 3 ) 
{ x++; i++; }

非0为1,非1为0,非任何非零值,均为0。
一、C语言中非操作为逻辑运算一种,符号为!。形式为 !expr(表达式,变量或者常量)
二、对于逻辑操作而言,只有真和假两种结果,也就是1和0。
三、在逻辑运算中,所有参与运算的操作数,都会转为逻辑值,即真/假参与运算。对于常量,如果值为0则假,其它值均为真。
四、于是对于任意的常数N,如果N为0,那么!N值为1。如果N不为0,那么!N值为0。

关于此题:
1.判断  :!x && i<3 是否为真
    由于 !x == !0 ,!0 ==1,所以表达式左边值为真;
    表达式右边  i = 0 < 3所以表达式右边值也为真;
    执行循环:x ++;  i ++;
    之后:   x = 1; i = 1;
2.判断: !x && i<3 是否为真
    由于 !x == !1 ,!1 ==0,所以表达式左边值为假;
    之后 :由于是短路与 && 表达式左边为假,表达式右边便不再参与判断
    循环条件不满足,退出循环
结论:只循环了一次。
发表于 2020-08-01 10:08:07 回复(2)
补充1楼,第一轮x=0,i=0则!x即为!0=1,while(1)可以循环大家应该知道的,&&就不解释了,所以第一轮可以运行。第二轮i=1 ,x=1,这个时候!x为!1=0,0与1,对或错,所以第二轮不运行
发表于 2019-03-07 20:09:17 回复(1)
这里要注意&&同真为真、有假则假退出判断。所以当x变为1的时候,!x=0,为假。退出while
发表于 2023-07-27 12:03:28 回复(1)
!逻辑非的优先级高于&&逻辑与 i=0, !i=1为左边真并且小于3右边也为真,满足条件执行循环,x++,i++。后i=1,!i=0不满足条件,退出循环
发表于 2018-05-22 10:19:32 回复(1)