C语言语法一个问题?

来源:百度知道 编辑:UC知道 时间:2024/06/16 22:10:08
下面程序的语法________(每行程序前面的数字表示行号)
1 main()
2 {
3 float a[3]={0.0F};
4 int i;
5 for(i=0;i<3;i++) scanf("%d",&a[i]);
6 for(i=1;i<10;i++) a[0]=a[0]+a[i];
7 printf("%f\n",a[0]);
8 }

哪行错了,第三行这样定义是什么意思啊?第6行这里的1循环不是都越界了?

第3行的定义是将单精的数组中每个元素都清0

第6行是越界了,但是编译器不会报错,因为数组是顺序存储的,数组下表表明了距离首元素的储存单元个数,比如a[3]虽然越界了,可是它表明的是a[2]之后的下一个长度为sizeof(float)的单元内的内容,所以能够正常调用

但第六行的确是错了

不知楼主想完成什么功能?

您好楼主是这样的,
此题问的是语法问题,所以只有第3行不对~
6行虽然越界但属于逻辑错误,语法是并没有问题的

0.0f表示的是0.0,后面的F意思是让编译器把这个0.0看做float,
但是使用定义数组时直接赋值,后面的项数必须和数字长度匹配,只给一个数是不行的~