2012-06-22 1 views
1

가능한 중복은 :
Size of character ('a') in C/C++
C : 설명는 sizeof 행동

누군가는 설명 할 수 이유 = 1 sizeof(name[0]) = 1 만 sizeof('a') = 4 C sizeof(char)에서? 이 경우

name[0] 내가이를 얻기 위해 C의 설명서를 읽으려고했지만 나는 단순히 그것을 얻을하지 않습니다 char name[1] = {'a'};

이 될 것입니다! sizeof('a')sizeof(name[0])이 둘 다 4 인 경우, 나는 둘 다 1이라면 이해할 수 있습니다. 그러나 불일치는 없습니다.

+2

내가 생각하는 당신은 크기가 4을 받고 있으므로 정수로'a'' 오히려'char' 유형과 int' 형'이다 고려하십시오. – nhahtdh

+0

@PhilipKendall 지적 해 주셔서 고맙습니다. 웬일인지 검색 결과에 나타나지 않았습니다! – Ali

답변

6

'a'과 같은 문자 리터럴은 int이고 따라서 sizeof('a')sizeof(int)과 같습니다.

C++에서 문자 리터럴은 char이고 따라서 sizeof('a')sizeof(char)과 같습니다.

참고 :

C99 표준 :

정수 문자 상수는 하나의 를 동봉 된 하나 개 이상의 멀티 바이트 문자의 순서는 다음과 같습니다 6.4.4.4 문자가
파라 2 상수 - ’x’ 또는 ’ab’과 같이 인용 부호가 붙습니다.

C++ 03 표준 : 2.13.2 문자 리터럴
파라 1 :

리터럴 문자 ’x’ 같이 하나 또는 작은 따옴표로 묶여 이상의 문자이며, 선택적으로 L’x’에서와 같이 문자 L이 앞에옵니다. L로 시작하지 않는 문자 리터럴은 일반 문자 리터럴이며 좁은 문자 리터럴이라고도합니다. 단일 문자를 포함하는 일반 문자 리터럴은 char이며 값은 실행 문자 집합의 c-char 인코딩 값과 같습니다.

+0

이 좋습니다. 감사! – Ali

+0

C 및 C++ 문자 상수는 모두 정수입니다. 그것은 중요한 유형입니다. –

+0

@CharlesBailey : 좀 더 명확하게 편집했습니다. –

0

는 C에서는 sizeof 연산자 '는'