也许有同样的问题,但我不知道如何制定它。 它之间有什么区别:
int x = 0;
if( someCondition )
{
x = 1;
}
和
int x;
if( someCondition )
{
x = 1;
}
else
{
x = 0;
}
答案 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)
编译器足够聪明,可以理解它完全相同,并且会生成相同的代码。
不同之处在于可读性和可维护性;如果你有任何一个版本作为一个更大的程序的一部分,它应该反映所做的事情的逻辑概念。