gpt4 book ai didi

c - 未初始化字符数组的 %d 说明符

转载 作者:太空宇宙 更新时间:2023-11-04 02:38:01 33 4
gpt4 key购买 nike

#include <stdio.h>

int main()
{
char a[8];
printf("%d\n",a) ;
return 0;
}

对于上面的代码,输出是这样的:- 2686744

此输出背后的原因是什么?我发现输出不依赖于数组的内容,而是依赖于数组的大小。我只是想要解释。

最佳答案

char a[8];    
printf("%d\n",a);

这段代码有未定义的行为。

数组表达式a被隐式转换为char*值,相当于&a[0]。然后将该值传递给 printf——但由于 %d 格式需要一个 int 参数,因此行为未定义。

如果 intchar* 恰好具有相同的大小,并且如果它们使用相同的机制作为函数参数传递,那么它可能会打印一个小数数组(的初始元素)地址的表示。

但是不要那样做。如果要打印地址:

printf("%p\n", (void*)a);

关于c - 未初始化字符数组的 %d 说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35027411/

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