【问题标题】:Avoid Multiple nested if statement in C避免在 C 中使用多个嵌套 if 语句
【发布时间】:2015-12-02 03:28:15
【问题描述】:

我正在考虑避免在我的代码中出现嵌套的 if 语句。

for (i = 0; i < N; i++) {
  if(x & y != 0) {
     if(z & k ==  z) {
        if(w & ( (c || u) && f)) { 
            //  Do something with the checked condition
        }
      }
    }
 } 
             `

首先 for 循环,然后在多个 if 语句中看起来很难看。此外,值 x、y、z、k 等的形式为 edgeBag[i].edgeWeight 甚至大于宽度,因此看起来更难看。

我能想到的一种方法是使用变量来存储 x、y、z 等,然后在 if 语句中使用变量来检查条件。

 for (i = 0; i < N; i++) {
 a = x;
 b = y; 
 ...
   if(a & b != 0) {
       ...
          ...
           // .....
    }
  }

一开始我并没有对此感到非常恼火,但是一旦这种模式开始经常出现,它就很烦人。有什么办法可以避免这种模式。或者更好的方式来说明这一点。谢谢。

【问题讨论】:

  • 还有elses吗?为什么不只是((x) &amp; (y) != 0) &amp;&amp; ((z) &amp; (k) == z) &amp;&amp; ((w) &amp; ( ((c) || (u)) &amp;&amp; f))
  • 如果你不使用这么多不必要的括号,它可能看起来不那么难看!
  • 关键是 John x, y,z 等本质上很长,因此它看起来更糟,如果我使用变量来做它看起来不太可读。
  • () 用于表明它不仅仅是一个二进制数。

标签: c if-statement for-loop


【解决方案1】:

怎么样:

for (i = 0; i < N; i++) {
  if(x & y == 0) continue;
  if(z & k != z) continue;
  if(!(w & ((c || u) && f))) continue;
  //  Do something with the checked condition
}

你也可以一起|| ifs。

【讨论】:

  • 感谢 zenith 更好了。标准做法是什么?
  • @user2754673 不幸的是,不存在与此相关的“标准”做法。
  • @user2754673 如果您最终可能不得不在该循环中的任何 if 语句中添加“else”,那么我建议您使用原始代码。
猜你喜欢
  • 1970-01-01
  • 2017-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多