gpt4 book ai didi

c - 在 C 中具有变量定义的 while 循环

转载 作者:行者123 更新时间:2023-12-05 00:52:01 25 4
gpt4 key购买 nike

我目前正在尝试循环访问由 C 中的 API 检索到的集合。

API 提供了一个 getNext() 函数,该函数返回对集合中下一个元素的引用,如果已到达末尾,则返回 NULL。

现在我想在 while 表达式中声明一个变量并循环直到 NULL:

// create collection from API
Collection collection = create();

if (collection == NULL) {
return -1
}

while (const Element *e = getNext(collection) != NULL) {
// print data from e
}

编译时,弹出“错误:意外表达式”。为什么该语句在 C 中不起作用?当我只有一个返回元素或 NULL 的函数 getNext() 时,如何遍历集合?

我也尝试了以下方法,但出现了同样的错误:

while ((const Element *e = getNext(collection)) != NULL) {
// print data from e
}

最佳答案

这是不可能的,因为 while() 需要一个表达式,并且无法在表达式中放置声明(尽管可以使用表达式引入新类型!)。

你能得到的最好的是:

const Element *e;
while ((e = getNext(collection)) != NULL) {
// print data from e
}

但是,可以使用 for 循环来实现所需的功能。

for (const Element *e; (e = getNext(collection)) != NULL; ) {
// print data from e
}

关于c - 在 C 中具有变量定义的 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70707982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com