gpt4 book ai didi

c - 为什么 sizeof 没有给出数组的长度?

转载 作者:行者123 更新时间:2023-11-30 15:38:14 26 4
gpt4 key购买 nike

当我在 printf 中使用 sizeof 时函数,它返回长度,但如果我分配给任何 int 变量,它不会给出数组的长度。相反,程序停止了。代码如下:

int main(void) {
int a[] = {1, 3, 5, 6, 23, 55, 93, 923, 112, 33, 5, 23};
int len = sizeof(a)/sizeof(a[0]); // It return anonymous integer
int len2 = sizeof(a);
// mergesort(a, 0, len); // This is an update, because of this, program stops.
printf("%d\t%d\n", sizeof(a)/sizeof(a[0]), len);
printf("%d", len2); // The program stops when using this.
}

更新:伙计们,很抱歉问这个问题。这是我的错误。它工作得很好,因为我正在使用合并排序算法。我认为这是合并排序中的一个错误。

最佳答案

@Acme 有一个很好的想法,使用 printf() 格式说明符 %d 作为 size_t 值是错误的。

在我的 Linux amd64 系统上,sizeof(int) = 4 且 sizeof(size_t) = 8。这可能是个问题。

它似乎对我来说工作得很好(也许第二个 printf() 语句后缺少换行符让您感到困惑?)但由于 size_t 与 int 格式说明符不匹配,结果未定义。

$ ./size
12 12
48$

关于c - 为什么 sizeof 没有给出数组的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21871950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com