bool Check1 (int a, int b, int c, int d)
{
return (a <= b ? true : false && c <= d ? true : false);
}
bool Check2(int a, int b, int c, int d)
{
bool t = a <= b ? true : false;
bool f = c <= d ? true : false;
return t && f;
}
- 두 함수는 얼핏 보면 같은 내용을 단순히 떼어놓은 것 같지만, 여기에 1, 2, 4, 3을 입력 시
- 다른 결과를 도출한다.
- return (a <= b ? true : false && c <= d ? true : false);
분명히 괄호까지 쳐서 안의 내용을 먼저 계산하길 주문했지만 무시되고, a <= b ? true : false문만 연산한 후 반환을 해 버렸다. 아무래도 연산자의 결합 방향 문제인 듯.
주의해서 사용하자.
'자습' 카테고리의 다른 글
12345678 (0) | 2022.08.20 |
---|---|
TIPS (0) | 2022.08.20 |
고속 역 제곱근 vs math 제곱근 (0) | 2022.06.02 |
std::list의 begin()과 end() (0) | 2022.05.30 |
Notify 최적화 테스트 (0) | 2022.05.30 |