什么是程序的输出
#include <stdio.h>
int fun(char *a){
printf("%d\n",sizeof(a));
return 1;
}
int main(){
char a[20];
printf("%d\n",sizeof (fun(a)));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
md5*_*md5 18
除了可变长度数组,sizeof不评估其操作数.所以它只会产生fun(a)类型的大小,即 sizeof(int)(不调用函数).
C11(n1570)§6.5.3.4
sizeof和_Alignof运营商2 [...]如果操作数的类型是可变长度数组类型,则评估操作数; 否则,不评估操作数,结果是整数常量.