답변:
C 및 C ++에서 작은 따옴표는 단일 문자를 식별하고 큰 따옴표는 문자열 리터럴을 작성합니다. 'a'
은 단일 문자 리터럴 인 반면 "a"
, 'a'
및 종료 자 (2 개의 문자 배열)를 포함하는 문자열 리터럴 입니다.
문자 그대로의 형태 인 ++ C에서 char
,하지만 C에서, 문자 그대로의 형태가 참고 int
이라고 sizeof 'a'
동안의 int는 32 비트이다 (그리고 CHAR_BIT 8이다) 아키텍처에서 4 sizeof(char)
사방 1이다.
일부 컴파일러는 다중 문자 상수를 허용하는 확장도 구현합니다. C99 표준은 다음과 같이 말합니다.
6.4.4.4p10 : "하나 이상의 문자 (예 : 'ab')를 포함하거나 1 바이트 실행 문자에 매핑되지 않는 문자 또는 이스케이프 시퀀스를 포함하는 정수 문자 상수의 값은 구현 정의됩니다. "
예를 들면 다음과 같습니다.
const uint32_t png_ihdr = 'IHDR';
결과 상수 (이를 구현하는 GCC에서)는 각 문자를 가져 와서 이동하여 얻는 값을 가지므로 'I'는 32 비트 값의 최상위 비트로 끝납니다. 플랫폼 독립적 인 코드를 작성하는 경우에는 이것에 의존해서는 안됩니다.
큰 따옴표는 문자열 리터럴을위한 것입니다. 예 :
char str[] = "Hello world";
작은 따옴표는 단일 문자 리터럴을위한 것입니다. 예 :
char c = 'x';
편집 David가 다른 답변에서 언급했듯이 문자 리터럴의 유형은입니다 int
.
char str[] = {'H','e','l','l','o'};
, 그리고 str
것 아니 널 터미네이터 있습니다.
str
문자열이 아닙니다 (NTBS로 정의 된 C 스타일 문자열이 아님).
char[]
(사람들이 종종 "문자열"이라고하는) 모든 것이 null로 끝나는 것이 아니라는 것입니다.
"hello" /*seamlessly connected to*/ "world"
입니다. 그리고 이것은 주석 처리 된 여러 줄 메시지에 적합합니다.
작은 따옴표는 문자에 사용되고 큰 따옴표는 문자열에 사용됩니다.
printf("%c \n",'a');
printf("%s","Hello World");
안녕하세요 세계
반대로 그 반대로 사용하고 문자열에 작은 따옴표를 사용하고 문자에 큰 따옴표를 사용한 경우. 결과는 다음과 같습니다.
printf("%c \n","a");
printf("%s",'Hello World');
가비지 값이 있거나 예상치 못한 결과가 발생하거나 다음과 같이 출력 될 수 있습니다.
두 번째 진술 동안. 당신은 아무것도 볼 수 없습니다. 한가지 더. 이 후에 더 많은 진술이 있다면. 그들은 또한 당신에게 결과를주지 않을 것입니다.
참고 : PHP 언어는 작은 따옴표와 큰 따옴표를 쉽게 사용할 수있는 유연성을 제공합니다.
작은 따옴표는 문자를 나타내며 이중은 문자열을 나타냅니다.
Java에서도 마찬가지입니다.