본문 바로가기

프로그래밍/C++ language

3. 선택문(if, else ~ switch)

3.6 일반적인 오류와 위험 요소

 

오류 6. 두 실수의 동일성 검사

 

- 실수연산의 경우 제한된 정밀도를 가지므로, 정확한 값과 비교했을 때 동일한 값이 나오지 않음

- 따라서, 정확한 값과 매우 유사한지 여부를 따짐

 

ex)

double x = 0.6 - 0.1;

if(x == 0.5){

cout << "x is 0.5" << endl;

}

else{

cout << "x is not 0.5" <; //실제로 출력되는 부분

}

// x == 0.5 를 abs(x - 0.5) == EPSILON 으로 바꿔주어야 함

 

위험요소 1. 부울 변수 대입의 간소화

 

- 조건문으로 부울변수에 대입할 경우 한줄로 작성하는 것이 좋음

ex)

if (number & 2 == 0){

even = true;

}

else{

even = true;

}

// 좋은 코드 : bool even = number % 2 == 0;