gpt4 book ai didi

objective-c - 计算 if 表达式的行为与计算 BOOL 表达式的行为不同

转载 作者:行者123 更新时间:2023-12-03 17:37:57 24 4
gpt4 key购买 nike

我假设这两个 if 语句的结果始终相同

BOOL tmp = (expression);
if (expression) {

}

if (tmp) {

}

但正如这里发现的 Why is 0xF00 interpreted as NO, when the dec is not 0

就像检查 0xF00 指针时一样,情况可能并不总是如此......

计算 if 表达式的行为有何不同?

最佳答案

if 语句在 spec 的第 6.8.4.1 节中定义。 。相关部分是:

2 In both forms, the first substatement is executed if the expression compares unequal to 0.

您会注意到该语句中任何地方都缺少 BOOLBOOL 在 C 中不存在;它只是 Cocoa 提供的 signed char 的 typedef。 (bool 存在于现代版本的 C 中,但它是一种不同的类型,并且仍然与 if 语句无关。)

因此,如果 expression 比较不等于 0,但 tmp 比较等于 0,那么它们的行为会有所不同。这就是汤姆·哈灵顿在评论中提出的观点。

关于objective-c - 计算 if 表达式的行为与计算 BOOL 表达式的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40953767/

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