如果是其他陈述的话

时间:2016-08-28 10:49:29

标签: c# c++

也许有同样的问题,但我不知道如何制定它。 它之间有什么区别:

int x = 0;
if( someCondition )
{
    x = 1;
}

int x;
if( someCondition )
{
    x = 1;
}
else
{
    x = 0;
}

2 个答案:

答案 0 :(得分:4)

像这样的小问题很容易在诸如godbolt之类的在线编译器上进行测试:

int test1(bool someCondition)
{
  int x = 0;
  if( someCondition )
  {
    x = 1;
  }
  return x;
}

int test2(bool someCondition)
{
  int x;
  if( someCondition )
  {
    x = 1;
  }
  else
  {
    x = 0;
  }
  return x;
}

int test3(bool someCondition)
{
  return someCondition ? 1 : 0;
}

int test4(bool someCondition)
{
  return int(someCondition);
}

结果汇编程序:

test1(bool):
        movzx   eax, dil
        ret
test2(bool):
        movzx   eax, dil
        ret

test3(bool):
        movzx   eax, dil
        ret
test4(bool):
        movzx   eax, dil
        ret

所以实际上没有。这只是风格问题。

答案 1 :(得分:0)

编译器足够聪明,可以理解它完全相同,并且会生成相同的代码。

不同之处在于可读性和可维护性;如果你有任何一个版本作为一个更大的程序的一部分,它应该反映所做的事情的逻辑概念。