너무 간단한 건데, 이런걸 한번에 캐치하지 못했다.

수학시간에 배운데로 a -b < 0 은 a < b와 다를 바 없다.

하지만 프로그래밍 언어에서는?

꼭 그렇지는 않다.


위 간단한 코드를 출력해보면 무엇이 나올까?
출력 결과는
a < b
[end]

가 된다.
어찌 보면 당연한건데 막상 프로젝트에서 접하면 쉽게 발견하기 어려운 버그가 된다.
unsigned 인 a 와 b의 차를 계산하여 나온 결과가 음이 되므로 오버플로우에 의해서 a - b는 양이 된다.

이런 코딩을 하진 않겠지만 눈에도 익혀서 디버깅을 할 때 쉽게 찾을 수 있도록 노력해야겠다.



'프로그래밍 언어 > C/C++' 카테고리의 다른 글

linker 관련 링크  (0) 2011.04.15
calloc vs malloc  (6) 2011.04.06
[C언어] a - b < 0 vs. a < b  (0) 2010.10.25
C로 수행시간 체크하기  (0) 2010.09.30
__builtin_expect 키워드  (0) 2010.09.10
gcc 업그레이드 (4.5.0)  (0) 2010.07.21

+ Recent posts

티스토리 툴바