if if函数中的语句......这是一个好习惯吗?

时间:2013-02-27 16:30:46

标签: c

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

选项1

Void GoodPractice()
{
  bool flag;

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

OR

选项2

Void GoodPractice()
{
  bool flag=0;

  if (right)
  {
    flag=1;
  }
}

让我知道为什么。 感谢。

5 个答案:

答案 0 :(得分:1)

没有...

void GoodPractice()
{
  bool flag = right;

  // though I would return it  ;)
}

答案 1 :(得分:0)

bool flag = right != 0; // if you want to be more explicit

答案 2 :(得分:0)

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

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

例如,在短函数中,第二个选项是明确的,但如果bool flag=0和if语句之间存在大量代码,则第二个选项将不太清楚。

我完全用这两种原因。看看代码,这对你来说更清晰。

答案 3 :(得分: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;
}

答案 4 :(得分:-1)

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

Void GoodPractice()
 {
 bool flag;

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

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

但是我觉得,通过以清晰的方式编写代码来覆盖所有可能的逻辑类型,可以减少发生错误的可能性。