提问人:Danial Moghaddam 提问时间:10/5/2023 最后编辑:CliffordDanial Moghaddam 更新时间:10/5/2023 访问量:45
我正在尝试从用户那里获得一些数字集,比如说成绩。该代码不起作用,因为 size 在循环中被更改为随机数字
i am trying to get some sets of numbers let's say grades from the user. the code does not work since size gets changed to a random num in the loop
问:
我正在尝试从用户那里获得一些数字集,比如说成绩。该代码不起作用,因为 size 在循环中更改为随机数字。我不明白为什么大小在用户第一次输入后会得到一个随机值。当我使用数字而不是大小时,一切正常,因此询问成绩的大小会造成这个问题。
#include <stdio.h>
#include <stdlib.h>
float average(int size, float array[size]);
int size;
float array[];
float sum, avg;
int i,j;
int main()
{
printf("Hello there\n enter the number of grades you want to get average\n");
scanf("%d",&size);
printf("\n enter the grades\n");
while(j<size)
{
scanf("%f",&array[j]);
j++;
printf("size and j are %d and %d\n",size,j);
}
return 0;
}
size 在第一次循环后获得一个随机的大值。
答:
2赞
0___________
10/5/2023
#1
float array[];
Gcc 假设有 1 个元素数组,然后您将访问数组外部的元素。仅当编译器支持将其作为扩展时,此代码才会编译。这是一种未定义的行为。你需要有一个可以容纳元素的数组。size > 1
size
GCC 发出警告:
<source>:7:7: warning: array 'array' assumed to have one element
7 | float array[];
| ^~~~~
始终阅读警告
评论
1赞
Clifford
10/5/2023
我会走得更远,建议始终解决警告。(-Werror
)
评论
float array[];
没有元素,并且只会在非标准编译器中编译(或作为 .struct