size_tC에서 혼동되고 있습니다. sizeof연산자 가 반환한다는 것을 알고 있습니다. 그러나 정확히 무엇입니까? 데이터 타입입니까? for루프 가 있다고 가정 해 봅시다 . for(i = 0; i < some_size; i++) int i;또는 사용해야합니까 size_t i;?
C 표준 size_t은 모든 배열 색인을 보유 할 수있는 유형임을 보증합니다 . 즉, 논리적으로 size_t모든 포인터 유형을 보유 할 수 있어야합니다. Google에서 찾은 일부 사이트에서 이것이 합법적이며 항상 작동해야한다는 것을 읽었습니다. void *v = malloc(10); size_t s = (size_t) v; 따라서 C99에서 표준은 intptr_t및 uintptr_t유형을 도입했으며 서명 된 유형과 서명되지 …
std::size_t대신 루프와 물건에 사용해야 int합니까? 예를 들어 : #include <cstdint> int main() { for (std::size_t i = 0; i < 10; ++i) { // std::size_t OK here? Or should I use, say, unsigned int instead? } } 일반적으로 사용시기에 관한 모범 사례는 무엇 std::size_t입니까?
다음을 인쇄하는 C ++ 코드가 있습니다 size_t. size_t a; printf("%lu", a); 32 비트 및 64 비트 아키텍처 모두에서 경고없이 컴파일하고 싶습니다. 이것이 C99라면 printf("%z", a);. 그러나 AFAICT %z는 표준 C ++ 방언에는 존재하지 않습니다. 그래서 대신에 printf("%lu", (unsigned long) a); 정말 추합니다. size_t언어에 내장 된 s 를 인쇄 할 수있는 …
size_tC에서 유형의 변수를 인쇄하고 싶지만 size_t다른 아키텍처에서 다른 변수 유형으로 별칭이 지정된 것처럼 보입니다 . 예를 들어 한 시스템 (64 비트)에서 다음 코드는 경고를 표시하지 않습니다. size_t size = 1; printf("the size is %ld", size); 하지만 내 다른 컴퓨터 (32 비트)에서 위 코드는 다음과 같은 경고 메시지를 생성합니다. 경고 : …