【发布时间】:2021-09-25 10:53:07
【问题描述】:
我有以下代码:
#include <stdio.h>
int main()
{
int student = 1;
float mark, total = 0;
while (mark != -1.00) {
printf("Enter marks for Student %d (or -1 to stop): ", student);
scanf("%f", &mark);
total += mark;
student++;
}
return 0;
}
当我尝试使用 gcc -O -Wall main.c 编译它时,我收到警告:
main.c: In function ‘main’:
main.c:8:17: warning: ‘mark’ is used uninitialized [-Wuninitialized]
8 | while (mark != -1.00) {
| ~~~~~^~~~~~~~
main.c:6:11: note: ‘mark’ declared here
6 | float mark, total = 0;
|
【问题讨论】:
-
只需在
while循环开始之前打印mark的值,多次运行程序然后你会看到它可能包含任意值 - 因此需要在使用之前对其进行初始化它。给出警告是因为您使用mark作为条件并且它没有被初始化。 -
欢迎来到 SO。我们的问题是什么?您是否认为您收到了消息但初始化了
mark?你想知道如何初始化变量吗?你想知道为什么使用未初始化的变量是不好的吗?我们不知道您的知识水平以及信息的哪一部分让您感到困惑。 -
mark在while的测试尝试获取它时未初始化。
标签: c initialization warnings