런타임 오류 -UndefinedBehaviourSanitizer

DedGeek
  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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사