Оценка выражения, которое используется с sizeof

Есть ли какое-либо выражение, которое будет оцениваться как операнд sizeof. Я узнал, что в случае операнда переменной длины с sizeof выражение будет оценено. Но я не могу сделать пример, я написал код ниже,

int a[]={1,2,3};
printf("%d",sizeof(a[1]++));
printf("%d\n",a[1]);

но здесь я заметил из выходного выражения a[1]++ не оценивает. как сделать пример??

1 ответ

Решение

Ваш массив не является массивом переменной длины. Массив переменной длины - это массив, размер которого не является константным выражением. Например, data является массивом переменной длины в следующем:

int i = 10;
char data[i];

Чтобы увидеть пример кода, который имеет sizeof оцените его операнд, попробуйте что-то вроде этого:

#include <stdio.h>

int main(void)
{
    int i = 41;
    printf("i: %d\n", i);
    printf("array size: %zu\n", sizeof (char[i++]));
    printf("i now: %d\n", i);
    return 0;
}

Это печатает:

i: 41
array size: 41
i now: 42
Другие вопросы по тегам