c - 这个语句说明了什么,请解释 if(!(!x) && x)

标签 c

这个语句说明了什么,请解释if(!(!x) && x)

#include<stdio.h> 
 
int  main(){
   int x=5, y=10;

   if(!(!x) && x)
     printf("%d",x); 
   else   
    printf("%d",y); 

  return   0;
} 

最佳答案

if(!(!x) && x) 等同于 if(!!x && x)

!!x 如果 x 非零则为 1,如果 x 为零则为 0。

此外,表达式简化为 (!!x) 因为 && x 是重言式,因为 x 是非 volatile int 类型。但是将值折叠为 0 或 1 正是 if 条件的行为,因此 if 简化为 if (x)

关于c - 这个语句说明了什么,请解释 if(!(!x) && x),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62549115/

相关文章:

使用 memcpy 将数据复制到数组中

c - 将矩阵传递给 C 函数时出现段错误

c - 在c源代码中使用dll的效率

python - 将 mmap 指针作为 mmap 对象从 C 传递给 python

无法打开输出文件,权限被拒绝错误 : Id returned 1 exit status

c - 结构中可变大小的自引用

c - 如何更正此代码以检查字谜?

我们可以在 c 中对枚举变量进行类型转换吗

C 编程 - 如何匹配字符串的结束字符?

c - 处理多播组成员的好方法