나는이 네 가지 조건에 의해 혼란 스러워요 : 문자표준의 문자열 리터럴 및 문자열 리터럴?
문자열을
문자 그대로
문자열을 상수.
- 멀티 바이트 문자 순서
그리고 C Standard이 인용 읽기 :
이문자 문자열 리터럴 필요가 문자열 (7.1.1 참조)하지를 널 때문에 문자는
\0
이스케이프 시퀀스에 의해 포함될 수 있습니다.
첫 번째 부분은 무엇을 의미합니까?
나는이 네 가지 조건에 의해 혼란 스러워요 : 문자표준의 문자열 리터럴 및 문자열 리터럴?
문자열을
문자 그대로
문자열을 상수.
그리고 C Standard이 인용 읽기 :
이문자 문자열 리터럴 필요가 문자열 (7.1.1 참조)하지를 널 때문에 문자는
\0
이스케이프 시퀀스에 의해 포함될 수 있습니다.
첫 번째 부분은 무엇을 의미합니까?
가
"abc"
;u8"abc"
;L"abc"
. 표준 (강조 광산)에서 :
리터럴 문자열이"xyz"
같이 큰 따옴표로 묶인 0 개 이상의 멀티 바이트 문자의 순서가
. A UTF-8 문자열 리터럴은 접두사 u8을 제외하고는 동일합니다. 넓은 문자열 리터럴은 ,
u
또는U
이라는 접두사를 제외하고는과 동일합니다.
....
변환 단계 7에서 문자열 리터럴 또는 리터럴의 결과 인 각 멀티 바이트 문자 시퀀스에 값 0의 바이트 또는 코드가 추가됩니다. 78)78) 널 문자가 \ 0 이스케이프 시퀀스 안에 삽입 될 수 있으므로, 문자열 (7.1.1 참조)하지 문자열 리터럴 필요하다.
그래서 문자열 리터럴은 예를스트링은 인접하여 종결 자 서열 및 제 널 문자 포함한다.
"a\0b"
또는 "\0ab"
을 위해, 또한 중간에 또는 시작 부분에 \0
가있을 수 있습니다. 나는 이것이 각주가 말하는 것이라고 생각한다. 문자 상수는 가능한 프리픽스 L
/u
/U
와 따옴표의 C-문자 시퀀스 (보통 단일 문자)이다.
정수 문자 상수
는'x'
에서와 같이 작은 따옴표에 동봉 된 하나 개 이상의 멀티 바이트 문자의 순서입니다. 넓은 문자 상수는 글자L
,u
또는U
접두사를 제외하고는 동일합니다.
그래서 용어는 매우 대칭 적이 지 않습니다. IMO. 예 : 와이드 문자 상수는 이고 문자 상수의 특정 경우는입니다. 그러나 문자 문자열 리터럴 및 넓은 문자열 리터럴 은 문자열 리터럴에 속합니다.
문자열 리터럴 == 문자 문자열 리터럴 – DyZ
@DYZ별로 없습니다. 표준은 문자, UTF-8 및 넓은 문자열 리터럴에 대해 이야기합니다. 그럼에도 불구하고, 질문은 오히려 문자 그대로 대 문자열에 관한 것이라고 생각합니다. – AlexD
문자열은 정의상 null 문자로 종료됩니다. 문자열 리터럴은 그 안에 null 문자를 포함 할 수 있습니다. 따라서 문자열 리터럴은 문자열이 아닐 수도 있습니다. –