首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在for循环中声明int是错误的做法?

为什么在for循环中声明int是错误的做法?
EN

Stack Overflow用户
提问于 2021-02-19 19:13:38
回答 4查看 502关注 0票数 3

在我大学的c++课程中,我习惯了在for循环中声明int的实践,比如:

代码语言:javascript
运行
复制
for(int i = 0; i < 5; i++)
{
    // code
 }

但是现在我正在上机电一体化课,我们用c和Arduino写东西,老师告诉我这样做是不好的,并建议这样做:

代码语言:javascript
运行
复制
int i = 0;
for(i; i < 5; i++)
    //code

为什么一个比另一个更好呢?

EN

回答 4

Stack Overflow用户

发布于 2021-02-19 19:23:16

机电一体化课程

我要用一个合理的猜测。

您所拥有的编译器可能是哑的,并编译了以下内容

代码语言:javascript
运行
复制
for(int i = 0; i < 5; i++) {
    //code
}
for(int i = 0; i < 5; i++) {
    //code
}

若要使用两个独立堆栈变量,请执行以下操作。现代编译器比这更好,但嵌入式系统有旧的哑巴编译器,老教官在修复问题后很久就会记住这些问题。考虑到这是Arduino,如果您有一个最新的编译器,那么它现在是完全错误的。

我记得曾经使用过一个编译器,它会在这段代码上与i一起爆炸,但我已经声明了,但我偏离了主题。

票数 6
EN

Stack Overflow用户

发布于 2021-02-19 19:26:20

为什么一个会比另一个更好呢?

例如,在您提前退出循环的情况下,您可能想知道i的最后一个值,当然,只有在循环之外声明它时才能访问它。因此,在这种情况下,这是唯一的选择(除非您为此使用一个单独的变量,但这会增加不必要的复杂性)。

但通常情况下,当两者都是有效的选项时,在最小的可能范围内声明所有变量可能会更有效率,而且更容易阅读--尽管后者可能是主观的,所以这主要是一个品味问题。前者在客观上并不是一般的“不良做法”。

票数 5
EN

Stack Overflow用户

发布于 2021-02-19 19:15:23

老实说,这并不是一种糟糕的实践,唯一的区别是在第二个场景中循环运行完之后,迭代器就可以访问了。

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

https://stackoverflow.com/questions/66283697

复制
相关文章

相似问题

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