아마도 같은 질문이 있었지만 그것을 공식화하는 방법을 모르겠습니다.else statement formulation
int x = 0;
if(someCondition)
{
x = 1;
}
그리고
int x;
if(someCondition)
{
x = 1;
}
else
{
x = 0;
}
이 같은
아마도 같은 질문이 있었지만 그것을 공식화하는 방법을 모르겠습니다.else statement formulation
int x = 0;
if(someCondition)
{
x = 1;
}
그리고
int x;
if(someCondition)
{
x = 1;
}
else
{
x = 0;
}
이 같은
리틀 질문은 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
그래서 현실에서는 없습니다. 그것은 단지 스타일의 문제입니다.
@ 테스트 전에 변수를 0으로 설정하는 암시 적 else가 있습니다. –
관심있는 사람들을위한 godbolt 링크 : https://gcc.godbolt.org/ – primodemus
컴파일러는 완전히 동일하다는 것을 이해하고 똑같은 코드를 생성합니다.
차이점은 가독성과 유지 보수성입니다. 더 큰 프로그램의 일부로 두 버전 중 하나가있는 경우 수행 된 작업의 논리적 개념을 반영해야합니다.
두 가지 모두 동일한 작업을 수행합니다. – DimChtz
기술적으로 차이가 없으며 항상 변수 초기화 (C# IIRC에서는 필요하지 않음)를 선호합니다. –
결과는 동일하지만 성능이나 그 밖의 다른 점이 있습니까? –