공용체를 사용해서 2개의 문자 > 1개의 short를 바꿀 때, 값의 문제.

  • atez_r
    atez_r

    안녕하세요. 오늘 알고스팟을 알고 가입하게된 아테즈입니다.

    LECTURE NOTE 문제를 풀던 도중.

    abbaaccb라는 문자열을 입력받으면, 두 자리씩 끊어서 정렬하는 문제

    라고 이해를 한 다음,

    union BOX{
    char[1001];
    short[500];
    }

    이와 같은 공용체를 사용하여 ab ba ac cb까지 나누는데는 성공하였습니다.

    그런데 예상과는 달리

    ab 25185
    ba 24930
    ac 25441
    cb 25187

    로 값이 출력됩니다.

    분명히 'c' = 99이고 'a'=97이면

    cb가 ac보다는 큰 값으로 나와야 할 것 같은데

    VS 2013에서 디버깅을 해보니 ac > cb입니다..

    어떠한 원리로 char[0] char[1] 을 short하나로 바꾸는지 궁금합니다...


    9년 전
2개의 댓글이 있습니다.
  • Being
    Being

    http://en.wikipedia.org/wiki/Endianness 를 참고하세요.


    9년 전 link
  • atez_r
    atez_r

    감사합니다 ! Endian 문제는 저 방법을 이용해서 해결했었는데.. 오오..


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