是否有任何表达式将被评估为 sizeof 的操作数。我已经知道如果使用 sizeof 的可变长度操作数,表达式将被评估。但是我不能举个例子,我写了下面的代码,
int a[]={1,2,3};
printf("%d",sizeof(a[1]++));
printf("%d\n",a[1]);
但是在这里我从输出表达式中观察到a[1]++
没有评估。如何举个例子??
是否有任何表达式将被评估为 sizeof 的操作数。我已经知道如果使用 sizeof 的可变长度操作数,表达式将被评估。但是我不能举个例子,我写了下面的代码,
int a[]={1,2,3};
printf("%d",sizeof(a[1]++));
printf("%d\n",a[1]);
但是在这里我从输出表达式中观察到a[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