C告诉我初始化变量,即使它已经初始化了

时间:2017-01-02 22:40:03

标签: c cs50

我正在研究CS50 PSET1。到目前为止,我有以下代码:

#include <stdio.h>
#include <cs50.h>

int main(void) {

    float change;

    do {
        printf("Change: ");
        change = get_float();
    } while(change < 0);

    int coins;

    for(int q = change; q < 25; q++) {
        q = 25 / q;
        coins += 1;
    }
    printf("%i", coins);

}

我遇到了问题。当我尝试使用make命令编译我的代码时,我收到一个错误说明

  

greedy.c:17:9:错误:变量'coins'在这里使用时未初始化[ - &gt; Werror,-Wuninitialized]          硬币+ = 1;

2 个答案:

答案 0 :(得分:2)

编译器是正确的。您从不首先向coins分配任何内容。你所做的就是增加它的(未初始化的)值。

要分配初始值,请写

int coins = 0;  /* or whatever the correct initial value is */

顺便说一句,我不太确定意图是什么,但以下内容极不可能是你想要的:

for(int q = change; q < 25; q++) {
    q = 25 / q;

注意赋值如何修改循环变量。虽然这是允许的,但在这种情况下,它看起来不太可能是有意的。

答案 1 :(得分:0)

int coins;

是一个局部变量,而不是一个静态变量,你可以在之前使用它来初始化它。