programing

C/C++에서 \x는 무엇을 의미합니까?

prostudy 2022. 6. 11. 11:45
반응형

C/C++에서 \x는 무엇을 의미합니까?

예제:

char arr[] = "\xeb\x2a";

그건 그렇고, 다음도 같은가요?

"\xeb\x2a"대.'\xeb\x2a'

\x는 16진수 문자 이스케이프를 나타냅니다.입력할 수 없는 문자(null 등)를 지정하는 데 사용됩니다.'\x00').

그리고."\xeb\x2a"는 리터럴 문자열입니다(타입은char *, 3 바이트, null-terminated) 및'\xeb\x2a'는 문자 상수입니다(타입은int, 2바이트, 늘 종단되지 않고 0xEB2를 쓰는 또 다른 방법입니다.A, 60202 또는 0165452).동일하지 않다:)

당신이 말할 때:

그나저나 이건 똑같아?

"\xeb\x2a" 대 "\xeb\x2a"

그들은 사실 그렇지 않다.첫 번째는 0바이트로 끝나는 문자열 리터럴을 만듭니다.이 문자열에는 사용자가 제공하는 16진수 표현을 가진2개의 문자가 포함됩니다.두 번째 값은 정수 상수를 생성합니다.

다른 사람들이 말했듯이\x는, 「10 진수」시퀀스를 개시하는 이스케이프 시퀀스입니다.

C99 규격의 상세 내용:

단일 따옴표 세트 내에서 사용하는 경우(') 문자는 다음과 같은 정수 문자 상수(6.4.4/2 "문자 상수")의 일부입니다.

에서와 같이 단일 문자로 둘러싸인 하나 이상의 멀티바이트 문자 시퀀스'x'.

그리고.

정수 문자 상수의 유형은 int입니다.단일 바이트 실행 문자에 매핑되는 단일 문자를 포함하는 정수 문자 상수의 값은 정수로 해석되는 매핑 문자의 표현 숫자 값입니다.두 개 이상의 문자를 포함하는 정수 문자 상수 값(예:'ab'또는 단일 바이트 실행 문자에 매핑되지 않은 문자 또는 이스케이프 시퀀스를 포함하는 것이 구현 정의됩니다.

이 예의 시퀀스는'\xeb\x2a'는 구현 정의 값입니다.int 값이 될 수 있습니다.0xeb2a또는0x2aeb타겟 플랫폼이 빅 엔디안인지 리틀 엔디안인지에 따라 다르지만 확실한 정보를 얻으려면 컴파일러의 매뉴얼을 참조해야 합니다.

이중 따옴표 세트 내에서 사용하는 경우(") 16진수 시퀀스로 지정된 문자는 늘 종단 문자열 리터럴의 일부입니다.

C99 표준 6.4.5/3 "스트링 리터럴"부터:

스트링 리터럴 또는 와이드 스트링 리터럴의 시퀀스의 각 요소에 동일한 고려사항이 적용됩니다.단, 단일 따옴표는 정수 문자 상수 또는 정수 문자 상수 또는 와이드 문자 상수입니다.'는 그 시퀀스로 수 .\', 의 '2단'은 2개입니다"로 표시되어야 .\".


추가 정보:

내 생각에, 당신은 '다문자' 상수를 사용하는 것을 피해야 한다.일반, 구식 사용보다 가치가 있는 경우는 거의 없습니다.int일정한.예를들면,'\xeb\x2a'보다 휴대하기 쉽게 지정할 수 있습니다.0xeb2a또는0x2aeb어떤 가치를 원하느냐에 따라 달라지죠

다중 문자 상수가 유용한 영역 중 하나는 디버거나 메모리 덤프에서 인식할 수 있는 영리한 열거 값을 생각해 내는 것입니다.

enum CommandId {
    CMD_ID_READ  = 'read',
    CMD_ID_WRITE = 'writ',
    CMD_ID_DEL   = 'del ',
    CMD_ID_FOO   = 'foo '
};

상기의 휴대성 문제는 거의 없습니다(소량 입력 또는 경고가 발생할 가능성이 있는 플랫폼 이외).문자가 little-endian 형식으로 enum 값이 되든 big-endian 형식이 되든 코드는 계속 작동합니다(enum 값으로 다른 신성함을 해제하지 않는 한).문자가 예상과 다른 endianness를 사용하여 값이 될 경우 디버거에서 값을 읽기 어려울 수 있지만 '정확성'에는 영향을 미치지 않습니다.

\x16진수 문자 탈옥이라는 뜻이죠그렇게\xeb인격을 의미하다eb16진수 또는235십진법으로상세한 것에 대하여는, http://msdn.microsoft.com/en-us/library/6aw8xdf2.aspx 를 참조해 주세요.

두 번째에 대해서는, 같지 않아요.큰따옴표는", 즉 문자열, 늘 종단 문자 배열입니다.단, 따옴표는 1개입니다.'는, 1 문자의 바이트, 즉 그 문자가 나타내는 바이트)를 의미합니다.

유용한 웹 사이트가 여기에 있습니다.

그리고 나는 다음과 같이 인용한다.

x 부호 없는 16진수 정수

그렇게 하면 당신의\xeb소수점 이하로는 235입니다.

문자열이 실제로 16진수임을 나타내는 특수 문자입니다.

http://www.austincc.edu/rickster/COSC1320/handouts/escchar.htm

\x 를 사용하면 문자를 16진수 코드로 지정할 수 있습니다.

이를 통해 일반적으로 인쇄할 수 없는 문자를 지정할 수 있습니다('\n'=newline' 및 '\t'=탭 '\b'=bell'과 같은 특수 이스케이프 시퀀스가 미리 정의되어 있습니다).

언급URL : https://stackoverflow.com/questions/2547349/what-does-x-mean-in-c-c

반응형