gpt4 book ai didi

c - 将 int 值读入数组未按预期工作

转载 作者:太空宇宙 更新时间:2023-11-04 06:28:06 24 4
gpt4 key购买 nike

我编写了以下代码来将一些 int 值读入数组并找到其中最大的值。

#include<stdio.h>

int main() {

int a[5] ;
int i ;
int Gr = 0 ;
int j ;


for ( i = 0 ; i <= 5 ; i++ ) {
scanf( "%d" , &a[i] ) ;
}


for ( j = 0 ; j <= 5 ; j++ ) {

if ( a[j] > Gr) {
Gr = a[j] ;
}

}

printf("%d\n" , Gr ) ;

return 0 ;
}

我观察到如果对于数字 1 和 2 ,无论我输入多少次它都不会停止循环并打印最高值。

为什么会这样?

最佳答案

这个:

for ( i = 0 ; i <= 5 ; i++ )  

是错误的,它将读取 6 个数字并溢出 a ,触发未定义的行为(甚至可能覆盖 i )。应该是:

for ( i = 0 ; i < 5 ; i++ )  

你应该几乎总是使用模式 for(i = 0; i < N; ++i)当遍历 N 时数组中的项目。

对于这个特定的代码,重复 5 并不是一个好主意。 ,这是一个神奇的常数。使用 sizeof在编译时计算它:

for( i = 0; i < sizeof a / sizeof *a; ++i)

关于c - 将 int 值读入数组未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23654919/

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