gpt4 book ai didi

c - 为什么当外部 if 不为 true 时它会进入 else block ?

转载 作者:行者123 更新时间:2023-11-30 19:23:28 27 4
gpt4 key购买 nike

这是我的代码:当我的数组输入的输入是 10001 时。然后它也进入 else block 中输入 [1]=0,其中我已将条件放入外部 if if(input[j] ==1).谁能告诉我为什么会发生这种情况?

#include<stdio.h>
int main()
{
unsigned int tcase=0,build=0,i=0,j=0,k=0,count=0;
unsigned int input[1000];
scanf("%d",&tcase);
while(tcase--)
{
scanf("%d",&build);
for(i=0;i<build;i++)
scanf("%d",&input[i]);

for(j=0;j<build;j++)
{
if(input[j]==1)
{
if(j==0)
{ input[j+1]=1;

printf("fddf");
}
else if(j==(build-1))
{
input[j-1]=1;

printf("Gfgf");
}
else
{
input[j+1]=1;
input[j-1]=1;
printf("awGfgf");
}
}
}
for(k=0;k<build;k++)

{
if(input[k]==0)
++count;
}
printf("%d\n",count);
}
return 0;
}

最佳答案

这是因为您正在检查超出数组边界末尾的值,用不确定的值测试内存。

您的数组定义为

unsigned int input[1000];

声明

if(input[j]==1)

当 j 为 10001 时,测试内存方式超过数组边界的末尾。该内存的值(value)是不确定的,实际上取决于许多因素。该内存地址的值为 1 的可能性非常小(事实上,如果内存真正随机初始化,则概率为 2^32 中的 1)。

关于c - 为什么当外部 if 不为 true 时它会进入 else block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11810525/

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