gpt4 book ai didi

objective-c - 为什么要在init方法中使用双括号,还是1 ==(1)?

转载 作者:行者123 更新时间:2023-12-01 14:40:41 25 4
gpt4 key购买 nike

括号在评估某些含义时会做什么?
我已经在代码中遇到了这个问题,当检查了某些东西并且他们使用

if ( (some condition that returns 1) )
{
code
}

所以我的问题是,这个评估是否正确?我认为它总是错误的,因为(1)不返回任何东西?

编辑:澄清,问题是为什么要在双括号中?我知道1是正确的。

最佳答案

当将赋值用于其真实值时,将使用附加括号。它们允许编译器区分

if ((var = expr))

作为赋值和真值测试的合法组合,并且
if (var = expr)

作为 if (var == expr)的拼写错误。

从C和C++继承过来的约定是供编译器警告 if (var = expr),因为这可能是 if (var == expr)的拼写错误。他们不警告 if ((var = expr)),因为额外的括号集向编译器发出信号,表明该分配是有意的。正如rob mayoff所解释的那样,clang有一种特殊情况,即不会警告 self的某些分配,但是对于许多编码人员而言,习惯仍然存在。

就像其他人说的那样,无论有没有额外的括号,生成的代码都是完全相同的。

关于objective-c - 为什么要在init方法中使用双括号,还是1 ==(1)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15379730/

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