求运行结果,可以解释下运行过程吗

img

这里主要考察的是布尔值的隐式转换;

初始化 a、b、c;赋值为0;

进入if区间 if(!a) ,0等于布尔的false,!取反,结果为 true;执行x--,(这里得到x=34)。执行了if区间else区间不执行;

进入下一个if区间,if(c),同样,c初始化的时候为0了,即false;不执行if区间,来到else区间,执行了x=4;

最终的x结果就是 等于 4;

  1. 0、空、空数组,都会转为false ;
  2. 非0数字、字符串会转为true ;
  3. ! 取反符号可以转化false和true

B

输出:x=4,选B 。if(!a) x--;//条件满足,此时x-- = 34 else if(b); if(c) x=3; else x=4;//if(c)不满足,所以执行else x=4.