是否有任何表达式将被评估为sizeof的操作数。我已经知道在具有sizeof的可变长度操作数的情况下,将评估表达式。但我不能做一个例子, 我写了下面的代码,
int a[]={1,2,3};
printf("%d",sizeof(a[1]++));
printf("%d\n",a[1]);
但是我在输出表达式a[1]++
中观察到的不是评估。
如何做一个例子??
答案 0 :(得分:6)
您的数组不是可变长度数组。可变长度数组是一个大小不是常量表达式的数组。例如,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