Оценка выражения, которое используется с 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