O que é tamanho_t em C?

Estou ficando confuso com o size_t em C. Eu sei que ele é devolvido pelo operador sizeof. Mas o que exatamente é isso? É um tipo de dado?

Digamos que eu tenho um loop "para":

for(i = 0; i < some_size; i++)

Devo utilizar int i; ou size_t i;?

Solução

Da Wikipedia:

De acordo com a norma ISO C de 1999 (C99), size_t é um número inteiro não assinado tipo de pelo menos 16 bit (ver secções 7.17 e 7.18.3).

size_té um tipo de dado não assinado definido por vários padrões C/C++, por exemplo, a norma C99 ISO/IEC 9899, isso é definido em stddef.h.1 Ele pode ser ainda mais importado através da inclusão de stdlib.h como este arquivo internamente sub inclui stddef.h.

Este tipo é utilizado para representar o tamanho de um objecto. Funções da biblioteca que tomam ou retornam tamanhos os esperam para ser do tipo ou ter o tipo de retorno de 'tamanho_t'. Além disso, o mais frequentemente usado com base em compiladores o tamanho do operador deve ser avaliado a um valor constante que é compatível com size_t.

Como uma implicação, o size_t é um tipo garantido para manter qualquer índice de array.

Comentários (9)

O size_t é um tipo não assinado. Portanto, ele não pode representar nenhum valor negativo(

Comentários (17)

O manpage para types.h diz:

size_t deve ser um número inteiro não assinado

Comentários (0)