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]++没有评估.如何做一个例子?
您的数组不是可变长度数组.可变长度数组是一个大小不是常量表达式的数组.例如,以下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)