2013-07-04 2 views
4

이것은 인터뷰에서 질문되었습니다. "아래 함수에 버그가 있습니다. 무엇입니까?" c 함수를 추가하고 main 함수가이를 호출하는 것은 간단합니다. "입력 값을 다르게해서 테스트하고 버그를 찾아라."간단한 추가 기능에서 버그 찾기

int add (int x, int y) 
{ 
    return x + y; 
} 

답변

11

문제 x+y 초과 또는 INT_MAXINT_MIN 미만이면 정수 오버 플로우가 발생할 수있다. 따라서 반환 유형으로 long long을 사용하십시오.

+0

+1 물론 C99을 지원하지 않는 컴파일러의 경우 'long long'대신 사용할 수 있습니다. –

+0

숫자 중 적어도 하나가 0보다 크다는 것을 안다면'unsigned'을 사용할 수 있습니다. – banarun

+0

"적어도 하나의 숫자가 0보다 큽니다", 아니요, '부호없는 long x = -5 + 2'가 실패합니다. 더 큰 abs 값이> 0입니까? –

관련 문제