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

标签 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: error: variable 'coins' is uninitialized when used here [-> Werror,-Wuninitialized] coins += 1;

最佳答案

编译器是正确的。你从一开始就不会为硬币分配任何东西。您所做的就是增加其(未初始化)值。

要分配初始值,请写入

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

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

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

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

关于C 告诉我初始化变量,即使它已经初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41434121/

相关文章:

c - 多线程 epoll

c - 重新分配指针的指针的指针

c - 编写新的系统调用

C99:静态库中的动态调度

c - 用 C 语言编写一个程序,应用 Luhn 算法进行信用卡验证

c - 通过 valgrind 从 cs50/pset5 拼写器运行 trie 字典时出现上下文错误

c - 我得到 "greedy.c:17:1: error: expected identifier or ' (' {"有人可以帮忙吗?它指的是 int main(void) 之后的行

c - 我的代码有什么问题(CS50 2012 Pset 1 贪婪)

c - 无法在 C 中打印数组值

CS50 维吉内尔问题。越界访问、未定义的行为