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 resposta

Neste 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.

questionAnswers(0)

yourAnswerToTheQuestion