Как работает оператор sizeof в C? [Дубликат]

На этот вопрос уже есть ответ здесь:

Тип выходных данных оператора sizeof () 1 ответ

В этом коде ниже:

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

При компиляции на gcc (Ubuntu 4.8.4-2ubuntu1 ~ 14.04.3) 4.8.4 компилятор выдает предупреждение:

формат "% d" ожидает аргумент типа "int", но аргумент 2 имеет тип "long unsigned int" [-Wformat =] printf ("% d", sizeof (int));

Почему я получаю это предупреждение? Это тип возвращаемого значения sizeof 'long unsigned int'?

Когда я заменил «% d» на «% ld», появилось предупреждение.

Ответы на вопрос(1)

Ваш ответ на вопрос