C语言 为什么我得到一个变量的未使用变量错误,而不是另一个,即使在原则上他们应该是相同的?

a0x5cqrl  于 2022-12-17  发布在  其他
关注(0)|答案(2)|浏览(104)

我试图建立一个链表,当我创建一个newNode的时候,由于某种原因,我得到了一个unused variable的错误,令我困惑的是,当我创建head的时候,我没有得到这样的错误,有人能解释一下我做错了什么吗?
另外,由于某种原因,在循环的第一次迭代之后,它开始打印Input:两次。

int main()
{
    char input[1];
    struct node *head = NULL;
    struct node *newNode = NULL;

    do {
        printf("\nInput: ");
        scanf(" %c", input);

        if(strcmp(input, "=") != 0) {
            if(head == NULL) {
                
                //no error
                head = addLast(head, inputToNode(input));
            }
            else {
                //error
                newNode = addLast(head, inputToNode(input));
            }
        }

    } while(strcmp(input, "=") != 0);

    return 0;
}

我得到的错误是“错误:变量“newNode”已设置但未使用[-Werror=未使用但已设置变量]”

wdebmtf2

wdebmtf21#

你只是给NewNode赋值了一些数据,你能在代码中看到NewNode被使用的地方吗?
你应该总是在同一个变量上工作,headNewNode,例如,如果你的head == NULL你的代码表现很好,完美,现在,如果head已经存在,你只需要在head后面添加一个新节点:

head = addLast(head, inputToNode(input))

如果您这样做:

NewNode = addLast(head, inputToNode(input))

NewNode的长度始终为2,因为您永远不会修改head,head始终只包含第一个输入,并且NewNode将包含inputToNode(input)作为第二个元素

tv6aics1

tv6aics12#

...当我创建head时,我没有得到这样的错误。
head可能在分配读取(if(head == NULL))之后读取,其中newNode在其被分配之后读取。

相关问题