문자, 부호 문자 및 문자 비교에 관한 문제

최근 프로젝트를하고, 우리는 저장 메시지를 다른 사람이 보낸 문자 배열을 정의합니다. 정의 메시지 헤더 내가 메시지는 필적을 찾을 수 없습니다, 0xff가와 비교받을 수 있도록 한 후, 0xff0xff입니다. 몇 가지 정보를 읽거나 기본의 자신의 이해를 찾을 장소에 있지 않습니다.

우선, 나는 테스트 프로그램 코드를 작성하고 다음과 같이 운영 결과는 :

보이드 test_num ()
 {
    문자 A =하는 0x01;
    문자 B = 내지 0xFE;
    부호 숯 C = 내지 0xFE;
    는의 printf ( "A가 = % 02x \ n", a);
    의 printf ( "% B = 02x \ n", b);
    의 printf ( "C % = 02x \ n", c);
    인 printf (내지 0xFE "FE는 02x % \ n =");
    의 printf ( "(숯) FE = % 02x \ n"(숯)을 내지 0xFE);
    의 printf ( "- 1 = 02x % \ n", - 1);
    (a == 0x01로 있으면)
        COUT << "는 == 0x01로"<< ENDL;
    (b == 0xFE로 있으면)
        COUT << "B == 0xFE로"<< ENDL;
    (B == (숯) 내지 0xFE) 경우
        COUT << "B == (숯) 내지 0xFE"<< ENDL;
    (c == 0xFE로 있으면)
        COUT << "C == 0xFE로"<< ENDL;
    (255 == 0xFF에 있으면)
        COUT << "255 == 0xFF를"<< ENDL;
    경우 (-1 == 0xFF의)
        COUT << "- 1 == 0xFF를"<< ENDL;
    (-1 ==을 0xFFFFFFFF) 경우
        - "== 1은 0xffffffff"<< ENDL COUT <<
 }

다음과 같이 실행 결과는 다음과 같습니다

분석 : 02x ​​인쇄는 int이며 인쇄, 지금 우리는 문자 유형을 전달하는, 그래서 우선 형식 변환이있다. 숯불은 제 필요한 보수 24 비트의 데이터이며, 8 비트, 가장 INT 32 비트 시스템이다. 어떤 데이터가 그것을해야한다는 것입니다, 사실,이 변수의 긍정적이고 부정적인 상황을보고하고 0 긍정적, 부정적 보완 1. 특정 기준을 채우는 것입니다

https://blog.csdn.net/qq_39165336/article/details/78383239이 문서는 자세한 테스트를 실시했다.

== 판정 후, 숯 형 동안 리터럴있다. 즉, 문자 상수를 입력 무엇인가? 작은 값 오래 오래 부호 없음 long 긴, 긴 부호없는 문자 상수 INT 것을 관련 문서, 긴 부호 INT,,,에 의해. 처음 몇은 그래서 문자 및 INT는 말했다 변환을 입력 관련되는, 비교됩니다. 마지막 리터럴 상수 INT 부호이고,이 사실은 모듈러이고, 부호 INT 양수로서 이해 후 확장 부호 비트를 변환 할 필요가 숯불. 그들은 동일한 것을 마지막 공연.

마지막으로, 그는 우리가 문자열을 저장하려는 경우 그냥 이진 데이터를 저장하는 메모리를 열려면, 최고의 서명 숯불로 정의되면, 당신은, char 배열을 정의 할 수 있습니다 말했다.

게시 12 개 원래 기사 · 원 찬양 4 ·은 20000 +를 볼

추천

출처blog.csdn.net/wuzhidefeng/article/details/82905010