Рассмотрим следующий код:
#include <stdio.h>
int main(void)
{
int a[10];
printf("%d",(int)sizeof(a)); //prints 10*sizeof(int) (40 on my compiler)
printf("%d",(int)sizeof(a-3)); //prints sizeof(int) (4 on my compiler)
}
Я знаю, что sizeof()
является оператором времени компиляции, но я был удивлен, увидев вывод второго printf()
. Что может быть причиной? Есть ли неявное преобразование аргумента sizeof()
от типа массива к целочисленному типу?