2013-08-09 1 views
3

나는 필요한 모든 정보가 컴파일 타임에 알려질 것이고 컴파일러는 상수 값을 삽입 할 수 있다고 생각했을 것이다.sizeof (int) (또는 임의의 간단한 데이터 유형의 크기)는 런타임시 비용이 듭니까?

실제로 발생합니까?

+2

아니요, 'sizeof'는 컴파일 시간에만 사용됩니다. – chris

+0

그 밖의 다른 일은 발생하지 않습니다. –

+0

컴파일 타임에 발생하기 때문에 아니오. – Borgleader

답변

1

번호 sizeof(int)size_t 유형의 상수 표현이되며 이는 컴파일시 알려진 값입니다. 오버 타임 없음!

+0

그리고'sizeof'는 C++ 14의 VLA에서는 작동하지 않으므로 그 속성을 유지할 것입니다. – chris

+0

@chris : 오 대단합니다! 나는 그것을 몰랐다. 감사. – Nawaz

+0

@chris : VLA가 C++ 14로 만들었습니까? 나는'std :: dynamic_array'에 대한 이야기를 보았지만 완전한 VLA에 대해서는 공식적인 제안이 없었다. –

1

아니요. 컴파일 타임의 일입니다.

1

아니요, C++에서 sizeof은 항상 컴파일 타임에 계산됩니다.

C에서는 사실이 아니지만 가변 길이 배열은 예외입니다.