在我大学的c++课程中,我习惯了在for循环中声明int的实践,比如:
for(int i = 0; i < 5; i++)
{
// code
}
但是现在我正在上机电一体化课,我们用c和Arduino写东西,老师告诉我这样做是不好的,并建议这样做:
int i = 0;
for(i; i < 5; i++)
//code
为什么一个比另一个更好呢?
发布于 2021-02-19 19:23:16
机电一体化课程
我要用一个合理的猜测。
您所拥有的编译器可能是哑的,并编译了以下内容
for(int i = 0; i < 5; i++) {
//code
}
for(int i = 0; i < 5; i++) {
//code
}
若要使用两个独立堆栈变量,请执行以下操作。现代编译器比这更好,但嵌入式系统有旧的哑巴编译器,老教官在修复问题后很久就会记住这些问题。考虑到这是Arduino,如果您有一个最新的编译器,那么它现在是完全错误的。
我记得曾经使用过一个编译器,它会在这段代码上与i
一起爆炸,但我已经声明了,但我偏离了主题。
发布于 2021-02-19 19:26:20
为什么一个会比另一个更好呢?
例如,在您提前退出循环的情况下,您可能想知道i
的最后一个值,当然,只有在循环之外声明它时才能访问它。因此,在这种情况下,这是唯一的选择(除非您为此使用一个单独的变量,但这会增加不必要的复杂性)。
但通常情况下,当两者都是有效的选项时,在最小的可能范围内声明所有变量可能会更有效率,而且更容易阅读--尽管后者可能是主观的,所以这主要是一个品味问题。前者在客观上并不是一般的“不良做法”。
发布于 2021-02-19 19:15:23
老实说,这并不是一种糟糕的实践,唯一的区别是在第二个场景中循环运行完之后,迭代器就可以访问了。
https://stackoverflow.com/questions/66283697
复制相似问题