【问题标题】:What does this extra pair of parentheses do? [duplicate]这对额外的括号有什么作用? [复制]
【发布时间】:2018-05-09 01:39:27
【问题描述】:

在查看一段代码时,我看到了这一行:

if ((b = a)) { /* statements */ }

阅读上下文,我知道它的意图是这样的:

b = a;
if (b != 0) { /* statements */ }

我知道上面两行可以简化为第一个代码块,但是为什么是两对括号呢?这不会显得多余吗?我认为这完全可以:

if (b = a) { /* statements */ }

【问题讨论】:

    标签: c if-statement parentheses


    【解决方案1】:

    通常这样做是为了避免来自编译器的警告,即(然后)将赋值作为条件进行评估(以防开发人员在== 中错过了=

    警告:建议将括号括起来用作真值

    更具指示性的东西,

    int c = !!(b = a); // condition
    
    if (!!(b = a)) { 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-21
      • 1970-01-01
      • 2022-01-06
      • 2019-10-20
      • 1970-01-01
      • 2016-08-21
      • 1970-01-01
      • 2018-11-04
      相关资源
      最近更新 更多