c - C 中条件 if 条件的简写形式

标签 c

inline int is_empty(list head) {
    return !head ? 1: 0;
}

我可以看到,如果给定的列表为空,“is_empty”函数返回 1,否则返回 0,而且这种简短形式的条件-if 是可以理解的,但是谁能向我解释条件在这里是如何工作的,我符号 '!' 的含义使用空指针并执行 cond-if 仅接受 1 为真或除 NULL 之外的任何值足以验证条件。

最佳答案

好的,首先你必须明白,如果指针指向NULL,它就是指向特殊地址0。因此,如果 headNULL,则 !head 将返回 1。

其次,x ? 5 : 10x != 0 相同? 5 : 10!x ? 5 : 10x == 0 相同吗? 5 : 10。把第一点放到这个类比中 !head ? 1 : 0 是否与 head == 0 相同? 1 : 1 和你一样 head == NULL ? 1 : 0

第三,这可以简单地写成:

inline int is_empty(list head){
  return !head;
}

关于c - C 中条件 if 条件的简写形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49481312/

相关文章:

c - 简单的C文本扫描和打印

c - 使用 Eclipse CDT 调试 Linux 内核时出现 “No source available 0x”

c - 求助 C 语言中的 gcvt 函数?

c++ - HAVE_* 宏的目的是什么?

c++ - 如果直接跟随形成有效标识符的字符,则宏变量不会扩展

c - C 的 main() 函数的有效签名是什么?

c - IAR 嵌入式 IDE - 更改板支持

c - 取消引用结构体的双指针时出现问题

c - Doxygen addtogroup 问题与特殊函数 FUNC(..)

c++ - AIX 服务器中的 g++ 编译 - 抛出核心转储