2013-05-09 2 views

답변

8

당신은 sizeof을 사용할 수 있습니다 : 문자 유형에 대한

char h[] = "hello\0world"; 

std::cout << sizeof(h); 
+0

당신은 길이'를 sizeof (H)를 얻기 위해, 숯불의 크기에 의해 그러나 전체 크기를 나눌 것입니다/sizeof 연산자 : 그래서 그것은 모든 운영 체제에서 같은 결과를 줄 것이다 다음 코드 &를 실행 (숯)'내가 실수하지 않는다면. –

+7

'sizeof (char)'는 1이되도록 보장됩니다. – Cairnarvon

+0

@cairnavron 당신 말이 맞습니다. 나는 int의 관점에서 어떤 이유로 생각하고있었습니다. –

1

메모리 할당은 운영 체제 (16 비트, 32 비트 운영 체제 등)에 따라 달라집니다. 일부 운영 체제에서는 char 유형 데이터에 대해 2 바이트가 할당됩니다.

#include<iostream.h> 
int main() 
{ 
      char h[] = "hello\0world"; 
      cout<<sizeof(h)/sizeof(char); 
      return 0; 
} 
+1

C 표준의 정의에 따라'sizeof (char) == 1' *. 'CHAR_BIT'는 기술적으로 8이 될 필요는 없지만, 그것이없는 시스템은 거의없고 줄어들고 있습니다. – zwol

+0

또한, 더 이상 'iostream.h'도 없으며 iostream이 관련되어있을 때 운영자 우선 순위가 친구가 아닙니다. 이 특정 코드는 예상대로 수행되지만, 논리적 또는 관계형 연산자가있는 경우에는 그렇지 않습니다. – zwol

+0

@Zack : +1,하지만'h'를 중심으로'('와')'이 불필요하다는 것을 잊었고 -'return 0'도 - 그리고'cout'는'std :: cout'이 될 필요가 있습니다. 두 개가 아닌 세 개의 <를 넣으면'cout'은 작동하지 않습니다! ; -o –

관련 문제