全部问题 > 当前问题

if(!x)在这题目不理解是什么意思,谢谢翻译一下

潘敏来 2015-12-17 22:21:52

共 4 个回答

岁月无声 2015-12-17 22:31:12

if是判断,条件是-----x如果为0,if就为真,如果x不=0,那么if中的条件为假,不执行。

潘敏来 2015-12-17 22:34:48

回复 岁月无声:!x是表示x不等于0?

黄建聪 2015-12-17 22:39:37

在C语言中一般认为“0”是假,其他不是“0”的都是真。!是非的意思。这题x不是0,所以!x代表x就是0,所以!x为假。

嘿嘿大人 2015-12-17 23:37:28

if后面的表达式都是有逻辑值的,零的逻辑值为假,非零就是真,而加个感叹号就是代表非得意思,通俗来说就是!x的逻辑值和x的逻辑值是相反的,如果x为真那么!x就为假。x为假那么!x就为真

问题来自: 嵌套的if语句
有以下程序
#include <stdio.h>
main()
{ int x=1,y=0;
  if(!x) y++;
  else if(x==0)
    if (x) y+=2;
    else y+=3;
  printf("%d\n",y);
}
程序运行后的输出结果是 ______ 。
A. 3
B. 2
C. 1
D. 0
答案:D
解析:这道题目if嵌套的很混乱,根据else的就近原则,我先把格式给大家复原调整一下。 if(!x) y++; else { if(x==0) { if(x) y+=2; else y+=3; } } 由于x=1,因此!x为假,进入else。x==0为假,结束执行,y没有赋值。因此选D。