2014-12-19 8 views
-2

이 두 변수 선언을 고려하십시오. 이러한 선언에는 모두 데이터 유형이 있습니다. 이 데이터 유형의 실제 사용법은 무엇입니까?변수의 데이터 유형 사용은 무엇입니까

int a; 
MyClass b; 
  1. 데이터 형식을 유지하기 위해 각 선언 메모리의 한 부분이 있습니까?
  2. 사람이 사용하기 위해 이러한 데이터 형식을 사용합니까?
  3. 컴파일러 이후에 이러한 데이터 유형이 필요하지 않은가 (프로그램을 컴파일 한 후)?
  4. 이것에 관해 읽을만한 좋은 자료가 있습니까?
+0

1,2,3 예; 4 주제 끄기. – EJP

+0

좋은 책 목록은 다음과 같습니다. http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list – rubenvb

답변

1
  1. 필요한 메모리를 할당하기 위해 사용된다. 또한 (강한) 유형 검사에도 사용됩니다.
  2. 또한 (그러나 그 주된 이유는 아닙니다).
  3. 둘 다. 컴파일러는 그것들을 사용하지만 나중에 객체 유형에 따라 동적 동작을 사용할 수 있습니다.
  4. ?
+0

메모리 할당 후 프로그램에서 메모리 변수 유형 보유 ? –

+0

user2393256은 이미이 질문에 더 자세히 대답합니다. 컴파일러는 유형을 CPU가 이해할 수있는 언어로만 변환합니다. CPU는 실제로 유형에 대해 알지 못합니다. 또한 응용 프로그램에서 메모리가 할당되는 방식과 모든 변수가 저장되는 위치에 대해 자세히 신경 쓸 필요가 없습니다. 이는 OS로 인해 가상 메모리, 페이징 등을 사용하여 변경 될 수 있기 때문입니다. –

1
  1. 는 컴파일러는 이러한 변수 스택 메모리를 할당 할 것이다. 이 코드는 컴파일러와 소스 코드를 컴파일하는 시스템에 따라 다르므로 할당 된 메모리 양을 알 수 없습니다. C++의 변수는 포인터를 사용하지 않는 한 항상 스택에 할당됩니다. 이 경우 힙에 할당됩니다.

  2. 일반적으로 예. CPU가 데이터 유형을 이해하지 못해 결국 코드가 CPU에서 실행되는 바이너리 형식 (CPU 명령어 집합)으로 컴파일됩니다. 당신은 C++가 아니라이 명령어 세트로 프로그램을 작성할 수 있습니다. 그런 다음 Assembler를 사용할 것입니다. 하지만 어셈블러조차도 컴파일 된 코드가 있어야하기 때문에 코드를 작성하는 데있어 일종의 필수 인터페이스입니다.

  3. 코드에 따르면 컴파일러는 코드 최적화 (예 : copy elision)를 수행 할 수 있습니다.

  4. 나는 당신이 기대하고 있거나 배우려는 것이 확실하지 않지만, 당신은 일부 컴파일러 아키텍처 문헌을 찾을 수 있다고 생각합니다.

+0

그래서 컴파일 한 후에 더 이상 데이터 유형이 없습니다. 맞습니까? 즉, 데이터 유형 (예 : int)의 크기는 플랫폼을 망칠 때가 아니라 컴파일하는 플랫폼에 달려 있음을 의미합니다. 내가 맞습니까? –

+0

직접적으로. CPU 명령은 여전히 ​​몇 가지 종류의 값을 변경합니다. 예를 들어 모든 ARM 플랫폼이 부동 소수점 숫자를 효율적으로 처리 할 수있는 것은 아닙니다. 산술 논리 단위 (Arithmetic Logic Unit)는 레지스터를 사용하여 값을 저장하고 지시 값 집합을 사용하여 값을 처리합니다. [register] (https://en.wikipedia.org/wiki/Processor_register)에 맞는 데이터의 종류는 하드웨어에 의해 정의됩니다. – user2393256

관련 문제