bool isPalindrome(int x) {
if(x < 0){
return false;
}
double log = log10(x);
//below line is causing problem
//I've tried this too int totaldigits = floor(log) + 1;
int totaldigits = floor( log +1 );
int mask = pow(10,totaldigits-1);
for(int i =0; i<(totaldigits / 2); i++){
int atstart = x / mask;
int atend = x % 10;
if(atstart != atend){
return false;
}
x %= mask;
x /= 10;
mask /= 100;
}
return true;
}
totaldigits를 초기화하는 줄에 이상한 Error.ON이 표시됩니다. 나는 당신이 자유 시간이 있다면 이것을 이해하지 못합니다.
10 행 : Char 24 : 런타임 오류 : -inf가 'int'(solution.cpp) 유형의 표현 가능한 값 범위를 벗어났습니다. 요약 : UndefinedBehaviorSanitizer : undefined-behavior prog_joined.cpp : 19 : 24
if(x < 0)
이어야합니다 if(x <= 0)
.
C ++는 log10 (0)을 -infinity로 평가하므로
runtime error: -inf is outside the range of representable values of type 'int'
입력이 0 인 경우 특별한 경우를 작성합니다. 예를 들면 다음과 같습니다.
if(x <= 0) {
return !x;
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다