c语言变量未赋初值,运行输出结果是多少

#include <stdio.h>
int fun(int p)
{int d=5;
d+=p++;
printf("%d",d);}
main()
{int a=3,d;
fun(a);
d+=a++;
printf("%d\n",d);}
输出结果为83
主函数中d没有初值为什么会有输出结果

因为主函数main在定义变量d时未初始化(即没有初值),这时变量d中的值是垃圾值(即系统分配的随机值,不同编译器下可能是1,可能是0,可能是其他值,无法确定);而会有的输出结果即是你的d中的垃圾值与a运算后的结果,举个例子


#include <stdio.h>
int main(){
int a,b;
printf("%d",a+b);//这样也会有输出结果,但都是无法预料的
return 0;
}

ps.如果要想将函数fun中的d作为主函数的d值:

int d=5;//定义d为全局变量即可
#include <stdio.h>
int fun(int p)
{
d+=p++;
printf("%d",d);}
main()
{
int a=3;
fun(a);
d+=a++;
printf("%d\n",d);
}

函数里定义的局部变量分配在栈空间,这个空间有什么值是不可预料的,每次运行都可能不同。
如果是静态变量或全局变量。编译器在编译时为其分配地址,如果没有显式初始化,编译器会将其初始化为零。