편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2022.09.19

    포인터 관련하여 질문드립니다! *z = ~(hap & 0xFF); 에서 ~의 의미는?


    안녕하세요! c언어 관련하여 공부를 하다가 궁금한 점이 있어서 질문을 남깁니다! 우선 while문을 실행시켜, cnt값과 hap값을 출력시키는 것 까지는 이해가 되었는데, 그 뒤로 if문이 잘 이해가 가지 않아 질문을 남기게 되었습니다.

    *z = ~(hap & 0xFF);부분에서 hap & 0xFF 가 11인 것 까지는 알겠는데, ~ 가 무엇을 의미하는지 검색해봐도 나오지 않습니다. 또한, *z244가 되는 이유를 잘 모르겠습니다.

    #include <stdio.h>
    unsigned char test(unsigned char*, int, int);
    
    int main(void)
    {
        unsigned char message[5] = { 'A', 'B', 'C', 'D' };
        unsigned char ans;
        test(&message[4], 5, 1);
        printf("송신시 결과 = %d\n", (int)message[4]);
        ans = test(&message[4], 5, 2);
        printf("수신시 결과 = %d\n", (int)ans);
        return 0;
    }
    
    unsigned char test(unsigned char* p, int cnt, int flag)
    {
        unsigned short int hap = 0;
        unsigned char* z;
        z = p;
        while (cnt--)
        {
            hap = hap + *p--;
            if (hap & 0xFF00)
            {
                hap = hap & 0xFF;
                hap = hap + 1;
            }
            printf("cnt = %d hap = %d\n", cnt, hap);
        }
        if (flag == 1)
        {
            *z = ~(hap & 0xFF);
            return 0;
        }
        else
            return ~(hap & 0xFF);
    }
    
  • 프로필 sunnyang91@gmail.com님의 편집
    날짜2022.09.17

    포인터 관련하여 질문드립니다!


    안녕하세요! c언어 관련하여 공부를 하다가 궁금한 점이 있어서 질문을 남깁니다! 우선 while문을 실행시켜, cnt값과 hap값을 출력시키는 것 까지는 이해가 되었는데, 그 뒤로 if문이 잘 이해가 가지 않아 질문을 남기게 되었습니다. *z = ~(hap & 0xFF); 부분에서 hap & 0xFF 가 11인 것 까지는 알겠는데, ~가 무엇을 의미하는지 검색해봐도 나오지 않습니다ㅠㅠ; 또한, *z가 244가 되는 이유를 잘 모르겠습니다ㅠㅠ

    #include <stdio.h>
    unsigned char test(unsigned char*, int, int);
    int main(void)
    {
    unsigned char message[5] = { 'A', 'B', 'C', 'D' };
    unsigned char ans;
    test(&message[4], 5, 1);
    printf("송신시 결과 = %d\n", (int)message[4]);
    ans = test(&message[4], 5, 2);
    printf("수신시 결과 = %d\n", (int)ans);
    return 0;
    }
    unsigned char test(unsigned char* p, int cnt, int flag)
    {
    unsigned short int hap = 0;
    unsigned char* z;
    z = p;
    while (cnt--)
    {
        hap = hap + *p--;
        if (hap & 0xFF00)
        {
            hap = hap & 0xFF;
            hap = hap + 1;
        }
        printf("cnt = %d hap = %d\n", cnt, hap);
    }
    **if (flag == 1)
    {
        *z = ~(hap & 0xFF);
        return 0;
    }
    else
        return ~(hap & 0xFF);
    }**