5

是否有任何表达式将被评估为 sizeof 的操作数。我已经知道如果使用 sizeof 的可变长度操作数,表达式将被评估。但是我不能举个例子,我写了下面的代码,

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

但是在这里我从输出表达式中观察到a[1]++没有评估。如何举个例子??

4

1 回答 1

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
于 2012-07-10T19:55:51.327 回答