소프트웨어 동작의 의도하지 않은 또는 바람직하지 않은 측면이 모두 버그 인 것은 아닙니다. 중요한 것은 소프트웨어가 유용한 방식으로 작동하기 위해 신뢰할 수있는 유용하고 문서화 된 조건을 갖도록하는 것입니다. 예를 들어, 두 숫자를 받아들이고 곱한 다음 결과를 출력하고 결과가 9.95 이상 10.00 미만, 99.95 이상 100.00 미만이면 가짜 숫자를 출력하는 프로그램을 고려하십시오. 프로그램이 제품이 3에서 7 사이 인 숫자를 처리하기 위해 작성되었지만 다른 어떤 것도 처리하도록 요구되지 않는 경우, 동작을 9.95로 수정해도 의도 한 목적에 더 이상 유용하지는 않습니다. 그러나 프로그램을 다른 목적에 더 적합하게 만들 수 있습니다.
위와 같은 상황에서는 두 가지 합리적인 행동 과정이 있습니다.
실제적인 경우 문제를 해결하십시오.
프로그램의 출력이 신뢰할 수있는 범위를 지정하고 프로그램이 유효한 범위 내의 값을 생성하는 것으로 알려진 데이터에만 사용하기에 적합하다고 명시하십시오.
접근법 # 1은 버그를 제거합니다. 접근법 # 2는 진행 상황을 다른 목적보다 목적에 덜 적합하게 만들 수 있지만, 프로그램이 문제가되지 않는 문제가있는 값을 처리 할 필요가없는 경우.
99.95에서 100.0까지의 값을 올바르게 처리 할 수없는 것이 프로그래밍 실수 (예 : 소수점 이하 왼쪽에 두 자리를 출력하여 소수점 이하 자릿수를 출력하여 00.00을 산출하기로 결정)의 결과 인 경우에도 이러한 경우 프로그램이 의미있는 출력을 생성하도록 지정된 경우 버그. [우연히, 위에서 언급 한 문제는 Turbo C 2.00 printf 코드에서 발생했습니다. 그러한 맥락에서, 그것은 분명히 버그이지만, 잘못된 printf를 호출하는 코드는 문제가있는 범위에서 출력을 생성 할 경우에만 버그가있을 것입니다].