두 문자열 리터럴의 연결은 어떻게 작동합니까?
char* a="dsa" "qwe";
printf("%s", a);
출력:dsaqwe
제 질문은 이 물건이 왜 작동하는지 입니다.두 문자열 리터럴 사이에 공백이나 아무것도 주지 않으면 문자열 리터럴이 연결됩니다.
이게 어떻게 작동하는 겁니까?
ISO C 표준에 의해 정의되며, 인접한 문자열 리터럴이 하나로 결합됩니다.
언어는 조금 건조하지만(결국 표준입니다) 섹션6.4.5 String literals
의C11
상태:
번역 단계 6에서, 인접한 문자의 임의의 시퀀스 및 동일하게 프리픽스된 넓은 문자열 리터럴 토큰에 의해 지정된 멀티바이트 문자 시퀀스는 단일 멀티바이트 문자 시퀀스로 연결됩니다.
이는 에도 언급되어 있습니다.5.1.1.2 Translation phases, point 6
같은 기준이지만, 조금 더 간결하게:
인접 문자열 리터럴 토큰이 연결됩니다.
이것은 기본적으로 다음과 같은 뜻입니다."abc" "def"
와 다르지 않습니다"abcdef"
.
이것은 종종 다음과 같은 좋은 포맷을 유지하면서 긴 문자열을 만들 때 유용합니다.
const char *myString = "This is a really long "
"string and I don't want "
"to make my lines in the "
"editor too long, because "
"I'm basically anal retentive :-)";
그리고 묻지도 않은 질문에 대답하기 위해 "이게 무슨 소용이 있습니까?"
우선, 문자열 리터럴에 상수를 넣을 수 있습니다.쓸 수 있습니다.
#define FIRST "John"
#define LAST "Doe"
const char* name = FIRST " " LAST;
const char* salutation = "Dear " FIRST ",";
그리고 나중에 이름을 바꿔야 할 경우 한 곳에서만 변경하면 됩니다.
이와 같은 것들입니다.
당신은 당신 자신의 질문에 답했습니다.
두 문자열 리터럴 사이에 공백이나 아무것도 주지 않으면 문자열 리터럴이 연결됩니다.
그것이 C 구문의 특징 중 하나입니다.
ISO C 표준§5.1.1.2
다음과 같이 말합니다:-
- 인접 문자열 리터럴 토큰이 연결됩니다.
- 토큰을 구분하는 공백 문자는 더 이상 중요하지 않습니다.
언급URL : https://stackoverflow.com/questions/12120944/how-does-concatenation-of-two-string-literals-work
'bestsource' 카테고리의 다른 글
WooCommerce stock per attribute (0) | 2023.10.01 |
---|---|
$emit 또는 $는 컨트롤러에서 지시 AngularJS로 이벤트를 브로드캐스트합니다. (0) | 2023.10.01 |
Weblogic 및 Oracle:실행 중지됨실 (0) | 2023.09.26 |
Wordpress Cron 오류 "SSL 인증서: 로컬 발급자 인증서를 가져올 수 없습니다." (0) | 2023.09.26 |
Woocommerce에서 주문 품목에서 상품 sku를 가져오는 방법 (0) | 2023.09.26 |