inline int is_empty(list head) {
return !head ? 1: 0;
}
我可以看到,如果给定的列表为空,“is_empty”函数返回 1,否则返回 0,而且这种简短形式的条件-if 是可以理解的,但是谁能向我解释条件在这里是如何工作的,我符号 '!' 的含义使用空指针并执行 cond-if 仅接受 1 为真或除 NULL 之外的任何值足以验证条件。
最佳答案
好的,首先你必须明白,如果指针指向NULL
,它就是指向特殊地址0
。因此,如果 head
为 NULL
,则 !head
将返回 1。
其次,x ? 5 : 10
与 x != 0 相同? 5 : 10
和 !x ? 5 : 10
与 x == 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/