全部问题 > 当前问题

怎么理解

练习题解析中的这句话怎么理解:“a=1,所以!a为假,执行else”

if(!a)这是什么意思?


匿名课官 2015-11-20 19:28:28

共 3 个回答

嘿嘿大人 2015-11-20 20:01:33

!a就是将a的逻辑值反过来做(!a)的逻辑值,比如说a的值非零,那么a就为真,加上了!号就是非的意思,就是非真,那么就是假;当a的值为零的时候,那么a就为假,加了!逻辑值就是非假,即逻辑值是真的意思;

所以当a为非零值的时候(!a)逻辑值为假,

当a为0的时候(!a)的逻辑值为真;

而a=1时,是非零值,所以逻辑值为假,就本题而已是不会执行if后面的语句,反而执行else后面的语句;

当if后面括号里面的表达式的逻辑值为真时,会执行if后面所跟的语句或者语句块;当if后面括号里面的表达式逻辑值为假的时候,就不会执行if后面的语句块,如果有else那么就会执行else后面的语句,没有else就会接着往下执行;

匿名课官 2015-11-20 20:54:05

懂了。谢谢,嘿嘿

嘿嘿大人 2015-11-21 11:37:13

回复 匿名课官:不用谢,加油,嘿嘿

问题来自: 嵌套的if语句
有以下程序
#include <stdio.h>
main()
{
  int a=1,b=0;
  if(!a) b++;
  else if(a==0) if(a) b+=2;
  else b+=3;
  printf("%d\n",b);
}
程序运行后的输出结果是 ______ 。
A. 0
B. 1
C. 2
D. 3
答案:A
解析:将程序中的if语句重新排版如下: if(!a) b++; else { if(a==0) { if(a) b+=2; else b+=3; } } a=1,所以!a为假,执行else。a==0为假,跳出选择结构。b自始至终并没有被赋值。因此选A。