为了账号安全,请及时绑定邮箱和手机立即绑定

请帮我理解一下这段C代码

请帮我理解一下这段C代码

C C++
涟漪前世泪 2018-02-26 21:56:54
#include<stdio.h> int main() { int i; int max; int a[]={10,5,20,4,31,}; max =a[0];  for(i=0;i<10;i++) //printf("%d\n",i); if (a[i]>max) max=a[i]; printf("最大的数字为%d\n",max); return 0; } if (a[i]>max) max=a[i]; 20也大于max为什么就不直接输出20=max,而是输出31呢?
查看完整描述

1 回答

已采纳
?
这都不会

TA贡献72条经验 获得超92个赞

是这样的,因为for循环,所以会把数组a都遍历一遍。

详细说一下过程:

i = 0,max = 10,不赋值

i = 1,max = 10,不赋值

i = 2,max = 10,因为20大于10,赋值,max变为20。

注意:此时仍未结束循环,所以不做输出。为什么不结束呢?因为for、if这些关键字后面如果不带有大括号,只对后面一句代码有效,如果想对多行代码使用for,就必须用大括号括起来。虽然这里你的printf缩进了,但其实并不是for循环内的语句,而在循环外。所以在循环结束之后才会运行printf

i = 3,max = 20,不赋值

i = 4,max = 20,因为31大于20,赋值,max变为31。

......

循环结束后,输出31。

查看完整回答
2 反对 回复 2018-02-27
  • 1 回答
  • 0 关注
  • 983 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信