在循环中使用相同的变量名可以吗
Is it OK to use the same variable name in loops?
我刚开始用C++编程,在编码时,我开始注意到我的代码中有很多for循环,然后我开始思考。
在for循环中,当您创建像for (int **i**=1;i<10;i++)
这样的变量时,循环完成后i
会发生什么
可以用相同的变量名创建多个for循环吗
在while循环中创建变量怎么样?
。。。循环完成后,
i
会发生什么?
它超出了范围。
可以用相同的变量名创建多个for循环吗?
是的,这样做是可以的,也是广泛的做法。
在while循环中创建变量怎么样?
while循环内部创建的变量是while循环体的本地变量。它们不同于在for循环头的第一部分中创建的运行变量,后者仅在第一次进入循环之前执行。
在循环中创建的变量是在循环后不会保留相同值的变量。这只是一个时间值。例如,当您使用第一个"i"变量时,此代码将打印i=10。
#include <iostream>
using namespace std;
int main()
{
int i = 0;
for (i = 1; i<10; i++);
cout << i;
return 0;
}
我们在c++中,所以你可以在循环中完美地创建另一个"i"变量,它将具有一个时间值:
#include <iostream>
using namespace std;
int main()
{
int i = 0;
for (int i = 1; i<10; i++);
cout << i;
return 0;
}
它将打印"i"而非时间值,即0。
这取决于,如果您在for()
中定义迭代值i
,它是一个局部变量,并且只在for()
中声明,因此您不应该将它用于for()
中的另一个循环(此外,您有充分的理由)。
例如,以下代码将抛出一个错误,因为变量i
没有在for()
循环之外声明,这意味着它在通用main(){}
:内部不可访问
#include<cstdlib>
#include<iostream>
int main()
{
for (int i = 5; i > 0; i--) {
std::cout << "Iteration: " << i << std::endl;
}
std::cout << "Iteration outside of 'for': " << i << std::endl; // Error
return 0;
}
循环完成后,"i"会发生什么
"i"将获得输入条件中指定的最后一个值。
可以用相同的变量名创建多个for循环吗
它将取决于用于运行此代码的语法或语句。
良好做法将为不同的声明分配不同的变量名。
这也属于第一个问题。此外,您需要考虑此代码的位置将在网络、移动应用程序或程序中使用。
在while循环中创建变量怎么样?提前谢谢
最佳实践是在执行任何条件或语句之前创建变量。
像i
j
k
这样的通用名称确实很常用,但实际上这是一种常见的不良做法。变量名称应正确反映存储值的用途。例如,如果它用于索引项的向量,那么它应该被命名为item_index
,而不仅仅是i
。这似乎是不必要的冗长,但当具有通用名称的变量被搞砸时,这种方法有助于避免常见的错误,例如将此frobs[i] = some_frob; bars[j] = some_bar;
与frobs[bar_index] = some_frob; bars[frob_index] = some_bar;
进行比较。事实上,在这种情况下,不仅索引变量名应该是非泛型的,而且变量类型也不应该是非通用的,因此将一种索引类型转换为另一种需要显式强制转换。我认为存在几个通用命名变量的情况类似于三星程序员,因为它永远不应该发生在正确编写的代码中。
在循环范围内声明的变量在循环范围外不可见,所以没有问题。然而,构造for(int i=1;i<10;i++)
实际上是一个语法陷阱,因为它忽略了正常的作用域规则,并使在循环作用域外声明的变量i
在作用域内可见。这实际上与C不同,C中禁止在for
构造内部声明变量。基本上
for(int i = 1; i < 10; ++i)
{
// loop body
}
// i is not visible here
i = 42; // error
在C++中是一个更紧凑的等价于
{
int i;
for(i = 1; i < 10; ++i)
{
/* loop body */
}
}
/* i is not visible here */
i = 42; /* error */
C.
然而,一些编译器可能会展示非标准行为,并允许在for
构造内部声明的变量可见,即使在for
循环退出之后也是如此。例如带有/Zc:forScope-
的Visual C++
for(int i = 1; i < 10; ++i)
{
// loop body
}
// i is still visible here
i = 42; // no error
- 你能重载对象变量名本身返回的内容吗
- 在C/C++中将变量名定义为__00000001有什么好处吗
- C++变量名(可以将 main 声明为变量,但对于其他函数名称则不然)
- C++ - 声明中变量名后面的括号
- 如何使替换 c 函数的变量名成为错误?
- 变量在循环中显示,但不在循环中显示
- 是否可以创建没有变量名的变量
- fstream库,试图创建一个变量名为(c++)的文件
- 一个数组C++中的消息和变量名
- 在变量名后声明带有 () 的非内部类型与不使用变量名的行为不同。即 std::map<int,char>x(); - 这是怎么回事?
- 读入变量时循环终止,'Range_error' on C++
- 全局变量的循环依赖性与外部说明符
- 为什么这个循环变量在循环范围之外是可访问的
- 数组的变量名和该数组的地址有什么区别?
- 为什么我需要在每次迭代使用字符串流变量的循环时清除该变量
- 如何将变量名设置为字符串?C++
- 如何编写无变量的循环
- 类中具有相同变量名的多重继承
- 如何在从.txt文件中读取时不重复相同的变量名
- 在循环中使用相同的变量名可以吗