在查看一段代码时,我看到了这一行:
if ((b = a)) { /* statements */ }
阅读上下文,我知道它的意图是这样的:
b = a;
if (b != 0) { /* statements */ }
我知道上面的两行可以简化为第一个代码块,但为什么两对括号?这似乎不是多余的吗?我认为这完全没问题:
if (b = a) { /* statements */ }
答案 0 :(得分:1)
通常会这样做以避免来自编译器的警告,即将(然后)评估作为条件进行评估(如果开发人员错过了=
中的==
)
警告:建议用作真值的分配括号
更具指示性的东西,
int c = !!(b = a); // condition
if (!!(b = a)) {