Como o operador sizeof funciona em C? [duplicado]
Esta pergunta já tem uma resposta aqui:
Tipo de dados de saída do operador sizeof () 1 respostaNeste código abaixo:
#include<stdio.h>
int main(void)
{
printf("%d",sizeof(int));
return 0;
}
Quando compilado no gcc (Ubuntu 4.8.4-2ubuntu1 ~ 14.04.3), o compilador 4.8.4 fornece um aviso:
o formato '% d' espera o argumento do tipo 'int', mas o argumento 2 tem o tipo 'long sem assinatura int' [-Wformat =] printf ("% d", sizeof (int));
Por que estou recebendo esse aviso? Será que o tipo de retorno sizeof é 'long unsigned int'?
Quando substitui '% d' por '% ld', o aviso foi enviado.