Как работает оператор 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», появилось предупреждение.