首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C-是否可以从for循环中减少for循环的最大值?

问C-是否可以从for循环中减少for循环的最大值?
EN

Stack Overflow用户
提问于 2010-04-13 05:27:03
回答 4查看 844关注 0票数 6

例如:

代码语言:javascript
复制
void decrement(int counter) {
    counter--;
}

int counter = 20;
for (int i = 0; i < counter; i++) {
    for (int j = 0; j < counter, j++) {
        decrement(counter);
    }
}

理想情况下,我希望看到counter变量在每次运行for循环时递减,这样它运行的迭代次数少于20次。但是gdb显示在decrement()中counter是递减的,但是返回到for循环counter实际上保持不变。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-13 05:28:26

是的,这是可能的:

代码语言:javascript
复制
for (int i = 0; i < counter; i++) {
    counter--;
}

它在您的示例中不起作用的原因是因为您通过值传递并修改了值的副本。如果你传递了一个指向变量的指针,而不是仅仅传递了值,那么它将会工作。

票数 9
EN

Stack Overflow用户

发布于 2010-04-13 05:33:17

您还可以在decrement函数之外执行use pointers,以便值保持更改:

代码语言:javascript
复制
void decrement(int *counter) {
    (*counter)--;
}

int counter = 20;
for (int i = 0; i < counter; i++) {
    for (int j = 0; j < counter; j++) {
        decrement(&counter);
    }
}

或者直接执行counter--,而不是调用decrement函数。

票数 4
EN

Stack Overflow用户

发布于 2010-04-13 05:41:39

正如Mark所展示的,这是可能的,但这是其中一个不能做到的

虽然你可以用for循环来处理各种棘手的事情,但如果你能以一种更清晰的方式编写它,最好不要这样做。

保持代码简短以便于理解,而不是代码空间。代码是供人类阅读的,而不是关心它占用了多少空间。(在一般情况下,无论如何)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2625585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档