ENDIANS 문제 질문드립니다.

  • cocoslime
    cocoslime
    #include <iostream>
    #include <string>
    #include <math.h>
    
    using namespace std;
    
    unsigned int convert(unsigned int pint);
    
    int main(){
        int num;
    
    
        cin >> num;
    
        while (num--){
            unsigned int temp;
            cin >> temp;
            cout << convert(temp) << endl;
        }
    
        system("pause");
    }
    
    unsigned int convert(unsigned int pint){
        int temp1 = pint / (int)pow(2.0,24.0);
        int temp2 = (pint % (int)pow(2.0, 24.0)) / (int)pow(2.0, 16.0);
        int temp3 = (pint % (int)pow(2.0, 16.0)) / (int)pow(2.0, 8.0);
        int temp4 = pint % (int)pow(2.0,8.0);
    
        return temp1 + temp2*(int)pow(2.0, 8.0) + temp3*(int)pow(2.0, 16.0) + temp4*(int)pow(2.0, 24.0);
    }
    

    ENDIANS

    예제와 똑같이 출력이 나오는데도 오류라고 나오네요
    입출력문제인가요?


    8년 전
1개의 댓글이 있습니다.
  • kcm1700
    kcm1700

    C/C++에서 signed int에서 integer under/overflow는 undefined behavior가 됩니다.
    범위를 넘어가지 않게 unsigned int 또는 long long이나 uint64_t 등으로 연산해주세요.


    8년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.