首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解释程序的输出

解释程序的输出
EN

Stack Overflow用户
提问于 2013-06-25 13:19:04
回答 5查看 180关注 0票数 0
代码语言:javascript
复制
#include<stdio.h>
main()
{
    int x=10,y=20;
    if(!(!x)&&x)
      printf("x=%d\n",x);
    else
      printf("y=%d\n",y);
     return 0;
}

输出是10。如何输出?请在每一步中显示x的值。

EN

回答 5

Stack Overflow用户

发布于 2013-06-25 13:41:30

首先,运算符的优先级如下

代码语言:javascript
复制
() > ! > &&

现在,基于上述优先级的求解

代码语言:javascript
复制
 1. (!x)  = 0
 2. !(!x) = !(0) = 1
 3. (1 && 10) = 1// hence, true.
 4. hence, print x = 10
票数 7
EN

Stack Overflow用户

发布于 2013-06-25 13:26:37

(!x)是一个布尔值,用于检查x是否为零,如果其操作数不为零,则返回0,如果其操作数为零,则返回1。if(!(!x))等同于if(x),因为它对x的反向值!x求逆。此结果与x的结果通过&&运算符组合在一起。由于这两个条件都为真,因此将执行if块

票数 3
EN

Stack Overflow用户

发布于 2013-06-25 13:24:10

!x的值为0,然后!(!x)1,这为真,并且if()中的条件为真,即(1 && 10)为真,因此它输出x=10

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17289661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档