gpt4 book ai didi

c - 为什么 '&&'可以用来判断最大界限?

转载 作者:太空狗 更新时间:2023-10-29 16:05:10 26 4
gpt4 key购买 nike

我不知道这行 num && *num == maxNum 发生了什么。为什么var && *var可以用来判断max bound?我真的需要有人来解释这个......

void func(...,size_t *_Nullable num,...){

size_t num_=0;
somethingHappen_get_num(&num_);

if(num){
*num = num_;
}

if (num && *num == maxNum) { //why???????????
Log_print("num is too big");
return Error;
}
}

最佳答案

因为 numsize_t *_Nullable num 即指针类型,所以你应该经常检查它是否为空即 NULL 或者有一些有效的数据,如果它有效,那么只有它可以安全地取消引用(*num)它。

这里

if (num && (*num == maxNum)) { } /* safe & correct, && means if 1st operand is valid then only check 2nd operand which is recommended here */

条件检查是正确且安全的,因为首先 它检查 num 是否不为 NULL,如果为真,则仅检查 *num = = maxNumnum 中有一些东西,因此您可以执行 *num

考虑以下场景

if (num || (*num == maxNum)) { } /* bad practice, don't do it */

如果 numNULL,上述条件检查会产生问题,由于逻辑 OR 操作数 || 它将检查第二个操作数,因为第一个操作数为 false当它执行 *num 时会导致崩溃。

关于c - 为什么 '&&'可以用来判断最大界限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57471545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com