2

我有 2 段代码,我想知道使用其中任何一个的原因。两者都有效,但在 C 中这是一个好的做法?

选项1

Void GoodPractice()
{
  bool flag;

  if (right)
  {
    flag=1;
  }
  else
  {
    flag=0;
  }
}

或者

选项 2

Void GoodPractice()
{
  bool flag=0;

  if (right)
  {
    flag=1;
  }
}

让我知道为什么。谢谢。

4

5 回答 5

1

两者都不...

void GoodPractice()
{
  bool flag = right;

  // though I would return it  ;)
}
于 2013-02-27T16:35:48.907 回答
0
bool flag = right != 0; // if you want to be more explicit
于 2013-02-27T16:33:10.343 回答
0

这两个代码示例在功能上是等效的,所以真正的区别在于风格。

但是,可能存在一个比另一个更清晰的情况。

例如,在一个简短的函数中,第二个选项是明确的,但如果bool flag=0在 if 语句和 if 语句之间有很多代码,那么第二个选项就不太清楚了。

正是出于这些原因,我已经使用了这两种方法。看看代码,这对你来说似乎更清楚。

于 2013-02-27T16:34:03.517 回答
0

这取决于你想做什么。

一般来说,第二个版本比第一个版本好,因为没有没有定义标志的代码部分。

Void GoodPractice()
{
   bool flag=0;
   // you can use flag  
   if (right)
   {
      flag=1;
   }
}

Void NotAsGoodPractice()
{
   bool flag;
   // you can't use flag, because it has no defined value
   if (right)
   {
      flag=1;
   }
   else
       flag=0;
}
于 2013-02-27T16:34:51.033 回答
-1

以我的拙见,我觉得这更好。

Void GoodPractice()
 {
 bool flag;

  if (right)
  {
    flag=1;
  }
  else
  {
    flag=0;
  }
}

是的,它增加了代码行数,并且可能需要额外的一两个 CPU 周期。

但我觉得,通过以清晰的方式编写代码,涵盖所有可能的逻辑类型,出错的可能性会更小。

于 2013-02-27T16:35:04.767 回答