int a[] = {1,2,3,4};
printf("%d",sizeof(a)/sizeof(a+1));
输出: 4
任何人都能解释一下吗?
答案 0 :(得分:10)
这是错的。 sizeof(a)
是数组的大小,sizeof(a+1)
是指针的大小。将两者分开是没有意义的。
作者可能想要的是:
sizeof a / sizeof a[0]
这将产生数组中的元素数量。 sizeof a[0]
的大小为int
。
您的代码为您提供正确答案的原因是您的机器恰好有sizeof(int) == sizeof(int *)
。
除此之外:使用%zu
打印size_t
。