C++循环初始化的奇怪行为
C++ strange behavior of a for cycle initialization
我注意到一个 for 循环的奇怪行为......
案例1:
让我们有一个 i 变量的内部初始化
for ( int i=10; i <=10; i++)
{
std::cout << i;
}
return 0;
输出:
10
案例2:
现在我们在循环之外初始化 i
int i = 10;
for ( ; i <=10; i++)
{
std::cout << i;
}
return 0;
输出:
Nothing will be print
案例3:
初始化任何与 i 无关的变量:
int i = 10;
for ( int k = 0 ; i <=10; i++)
{
std::cout << i;
}
return 0;
输出:
10
问题
循环条件的结果如何取决于我们初始化变量 i 的位置?
更新的结果
我使用 degugger 跟踪了一个代码,VS 2010 在案例 2 中确实跳过了一个循环。然而,g++运行良好。也许编译器中的错误?
未婚期结果重新启动后,它可以正常工作。天地之间的东西。对不起,这个无用的问题....
如果情况 2 没有打印10
则编译器中存在错误或输出未刷新。同时向输出添加<< "n"
。
第二个也打印10
。如果没有,则编译器中存在错误,或者您使用了错误的编译器。
我在http://ideone.com/UB0V0
中运行了相同的代码。 你可以看看它。 它打印10
相关文章:
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- C++ 制作/命名不初始化的向量(在 while 循环中)
- 有没有办法使用输入的维度初始化 2d 数组中的所有项目而不循环C++?
- C++ 在循环中添加计数器变量并再次初始化其值
- C++,每个循环初始化一个新的静态变量
- 在循环中显示不同值的初始化数组
- (C++)for循环中的空初始语句是否保存所有编译器中变量的上一次初始化
- 查询有关循环初始化,条件和增量的查询
- 在循环初始化中使用带有静态的 constexpr
- C++循环初始化的奇怪行为
- 括号内用于循环初始化
- 用于使用两种不同变量类型的循环初始化
- 有没有一个C++版本在循环结束后将在for循环初始化中声明的变量保留在作用域中
- 如何在C++中使用 for 循环初始化字符串向量的向量
- 在for循环初始化语句中声明未命名结构体
- 使用 memset 而不是 for 循环初始化 int** 时出现分段错误
- 在for循环初始化时挂起很奇怪
- for 循环初始化变量范围在 C++、Java、C# 之间
- 在c++中使用for循环初始化一系列数组
- For循环初始化