gpt4 book ai didi

c - 对两个不同的操作数执行 && 操作是什么意思,一个指向节点,另一个是 int 类型?

转载 作者:太空宇宙 更新时间:2023-11-04 02:30:08 25 4
gpt4 key购买 nike

我正在经历一个交换 BST 的两个节点的问题。我们需要找到这两个节点并再次交换它以获得原始 BST( http://www.geeksforgeeks.org/fix-two-swapped-nodes-of-bst/ ) 在浏览代码时,在函数 correctBSTUtil()

if (*prev && root->data < (*prev)->data)

我无法弄清楚对两个不同的操作数执行 && 操作是什么意思,一个是指向节点的指针,另一个是 int 类型以及此条件何时变为真或假(一个例子会有所帮助)。我试图搜索但找不到更多相关信息。谢谢你的建议!!!

最佳答案

<运算符优先于 &&运算符(operator)。 ( c language operator precedence )

if (*prev && root->data < (*prev)->data)

表示

if (*prev && (root->data < (*prev)->data))

不是

if ((*prev && root->data) < (*prev)->data)

所以代码在*prev之间做逻辑与运算和 root->data < (*prev)->data .

此外,0NULL被视为 false用c语言。

由于代码适用-> *prev 上的接线员, prev似乎是指向指针的指针,导致 *prev作为一个指针。可能是NULL , 在这种情况下它将被评估为 false在条件表达式中。

另请注意 *prev必须在 && 的左侧在这种情况下,如果 *prevNULL if条件是 false已经并且程序不会评估 root->data < (*prev)->data完全可以防止试图取消引用 NULL 的段错误指针。

关于c - 对两个不同的操作数执行 && 操作是什么意思,一个指向节点,另一个是 int 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44474740/

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