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

ami*_*n__ 5 c expression sizeof

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

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

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

Alo*_*hal 6

您的数组不是可变长度数组.可变长度数组是一个大小不是常量表达式的数组.例如,以下data是一个可变长度数组:

int i = 10;
char data[i];
Run Code Online (Sandbox Code Playgroud)

要查看已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;
}
Run Code Online (Sandbox Code Playgroud)

它打印:

i: 41
array size: 41
i now: 42
Run Code Online (Sandbox Code Playgroud)