C ++ Primer 책 의 5 판을 살펴보면로 시작하는 정수 리터럴 0
은 octal
. 정수 리터럴 20
이 다음 표기법으로 표현되는 방법에 대한이 예제를 남겼습니다 .
20 `/* decimal */` 024 `/* octal */` 0x14 `/* hexadecimal */`
몇 페이지를 진행하면서 문자를 이스케이프 octal
하고 및 hexadecimal
숫자를 사용하여 문자의 숫자 값을 나타내는 방법을 소개했습니다 . 나는 이것을 선물 받았다.
std::cout << "Hi \x4dO\115!\n"; // prints Hi MOM! followed by a newline
std::cout << '\115' << '\n'; // prints M followed by a newline
a
\
뒤에 세octal
자리 이상이 오면 처음 세 자리 만\
. 예를 들어\1234
는 두 문자를 나타냅니다 .octal
값으로 표시되는123
문자와 문자4
. 반대로,\x
뒤에 오는 모든 16 진수를 사용합니다.\x1234
이 네hexadecimal
자리에 해당하는 비트로 구성된 단일 16 비트 문자를 나타냅니다 . 대부분의 컴퓨터에는 8 비트 문자가 있기 때문에 이러한 값은 유용하지 않을 것입니다. 일반적으로hexadecimal
8 비트 이상의 문자는 Table 2.2 의 접두사 중 하나를 사용하는 확장 문자 집합과 함께 사용됩니다 .
좋아 decimal
, 문자의 숫자 값을 나타낼 때 이스케이프 문자와 함께 사용되지 않거나 a octal
로 정의 된 전체 해석이 이스케이프 문자로 변경됩니까? 나는 뒤에 오지 않으면 octals
시작하는 리터럴로 해석 되지만 이전 블록 따옴표에서 읽은 내용은 ...0
x
예를 들어
\1234
는 두 문자를 나타냅니다 .octal
값으로 표시되는123
문자와 문자4
.
그것은 말한다 진수 값을 123
,하지만이 있습니다 0
. 따라서 이스케이프 문자로만 0을 자릅니다. 그렇다면 decimal
이스케이프 문자를 사용할 때 리터럴은 어떻게 표현됩니까?
그것은 말한다 진수 값 (123), 그러나 거기에는 0 그래서 그들이 영을 절단 만 이스케이프 문자를하지 않습니다, 그리고 그럼 어떻게 진수 리터럴 이스케이프 문자를 사용하는 경우 표현?
맞습니다. 8 진수 이스케이프 시퀀스를 사용하기 위해 0이 필요하지 않습니다. 문법은 [lex.ccon]에서 다음과 같이 정의됩니다.
octal-escape-sequence:
\ octal-digit
\ octal-digit octal-digit
\ octal-digit octal-digit octal-digit
hexadecimal-escape-sequence:
\ hexadecimal-digit
hexadecimal-escape-sequence hexadecimal-digit
또는 :
이스케이프
\ooo
는 원하는 문자의 값을 지정하는 데 사용되는 백 슬래시와 1, 2 또는 3 개의 8 진수로 구성됩니다. 이스케이프\xhhh
는 백 슬래시, x, 원하는 문자의 값을 지정하는 데 사용되는 하나 이상의 16 진수로 구성됩니다. 16 진수 시퀀스의 자릿수에는 제한이 없습니다. 8 진수 또는 16 진수 시퀀스는 각각 8 진수 또는 16 진수가 아닌 첫 번째 문자로 종료됩니다. 문자 리터럴의 값은char
(접두사가없는wchar_t
리터럴의 경우 ) 또는 (L이 접두사 인 리터럴의 경우 )에 정의 된 구현 정의 범위를 벗어나는 경우 구현에 정의됩니다 .
따라서 \19
값이 1 인 8 진수 리터럴과 값이 9 인 10 진수 리터럴이 있습니다. 10 진수 이스케이프 시퀀스가 없습니다. 여기에 전체 가능성 표가 열거되어 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다