¿Cómo funciona el operador sizeof en C? [duplicar]

Esta pregunta ya tiene una respuesta aquí:

Tipo de datos de salida del operador sizeof () 1 respuesta

En este código a continuación:

#include<stdio.h>
int main(void)
{
    printf("%d",sizeof(int));
    return 0;
}

Cuando se compila en gcc (Ubuntu 4.8.4-2ubuntu1 ~ 14.04.3) 4.8.4 compilador da advertencia:

el formato ‘% d’ espera un argumento de tipo ‘int’, pero el argumento 2 tiene el tipo ‘largo sin signo int’ [-Wformat =] printf ("% d", sizeof (int));

¿Por qué recibo esta advertencia? ¿Es que el tipo de retorno de sizeof es 'long unsigned int'?

Cuando reemplacé '% d' con '% ld', la advertencia desapareció.

Respuestas a la pregunta(0)

Su respuesta a la pregunta