2011-09-21 2 views
0

양수 또는 음수를 포함하는 배열의 첫 번째 인덱스를 살펴보고 음수 기호인지 분류하는 bool 함수를 작성하려고합니다. (즉 -). 그것이 음수 기호이면 false를 반환하고 다른 모든 것은 true를 반환합니다. 음수 기호를 비교하는 방법을 알아 내려고 노력 중입니다. 다음 코드 때문에의 오류를주는 '-'배열의 첫 번째 인덱스가 음수 기호인지 확인하는 방법

bool BigNum::get_positive() const 
{ 
char '-'; 
if(digits[0] == '-') 
{ 
    return false; 
} 
else 
{ 
    return true; 
} 
} 
+1

: '문자'- '; '? – Nim

+1

큰 정수에 대한 기존 라이브러리가 있습니다. [당신이하려고하는 것으로 추측합니다] 왜 바퀴를 다시 발명합니까? – amit

+0

또한 스타일 문제가 더 중요하지만 BigNum의 인스턴스가 양수인지 여부를 확인하려고하기 때문에 'isPositive()'라고 부르지 않는 이유는 무엇입니까? 'get_X() '라는 함수는 대개 저장된 정보를 반환한다고 제안합니다. 여기서는 그렇지 않습니다. – Anson

답변

5
char '-'; 

컴파일러는 당신이 문자를 선언하려는 생각하지만 유효한 선언이 아니다. 이 [0]digits의 유효한 인덱스가 있다고 가정한다, 물론

return (digits[0] != '-'); 

:

귀하의 전체 기능

로 대체 할 수있다. 그렇지 않다면 나쁜 일이 일어날 것입니다. 당신이 배열의 길이를 알고 있다면, 당신은이 같은 검사를 수행 할 수 있습니다

if(digits_length < 1) 
    return false; 
return (digits[0] != '-'); 
+1

'return digits_length> 0 && digits [0]! = '-''라고 쓰면 좋을까요? (이 경우 결과를 원한다고 가정하면 : 예외를 던지거나 심지어 중단하는 것이 더 적절할 것으로 생각됩니다.) –

+0

Aha good catch. :) – Anson

+0

@James : 글자가 길이가 0이면 '-'로 시작하지 않지만 숫자도 나타내지 않습니다. 그래서 일종의 기능은 사용하려는 의도에 따라 달라집니다. –

1
삭제 또는 의견합니다

"문자를 '-';"

1

실수는 줄 '-'에 있습니다. '-'는 나중에 비교 될 절인 경우 에서 사용할 수있는 일부 변수에 저장되어야합니다. '-'에 대한 저장소를 정의하지 않았기 때문에 이것은 구문 오류입니다.

그렇지 않으면 그냥이 줄을 삭제하고 사용하여 도망 위에서 지적한 바와 같이 '-'의 경우 (당신은 이미 그것을했던 것처럼)이 달성 할 것으로 예상하는 일

관련 문제