使用vs2022编译找最大值的为什么输出结果为-858993460的

使用vs2022编译找最大值的为什么输出结果为-858993460的

#######define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int arr[10]={ 0 };
//输入十个数字
int i=0;
for (i=0; i<10 ; i++)
{
scanf("%d", &arr[i]);
}
//找最大值
int max=arr[0];
for (i=1; i<10; i++)

    {
        if (arr[i]>max)
        {
            max=arr[i];
        }
    }

//打印
printf("max=%d\n", arr[i]);

return 0;

}

printf("max=%d\n", arr[i]);
改成
printf("max=%d\n", max);
==============
arr[i]是错的,上面循环结束的时候,i等于10,arr[10]是越界访问,数组外的内存值没有初始化,显示是个随机的-858993460值

你最后输出应该是max
而不是arr[i]此时i=10越界了

img

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int arr[10]={ 0 };
//输入十个数字
int i=0;
for (i=0; i<10 ; i++)
{
scanf("%d", &arr[i]);
}
//找最大值
int max=arr[0];
for (i=1; i<10; i++)

    {
        if (arr[i]>max)
        {
            max=arr[i];
        }
    }

//打印
printf("max=%d\n", max);

return 0;
}


您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632