与sizeof一起使用的表达式的评估

时间:2012-07-10 19:27:48

标签: c expression sizeof

是否有任何表达式将被评估为sizeof的操作数。我已经知道在具有sizeof的可变长度操作数的情况下,将评估表达式。但我不能做一个例子, 我写了下面的代码,

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

但是我在输出表达式a[1]++中观察到的不是评估。 如何做一个例子??

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