循环在此代码中仅迭代一次,而在另一个代码中正确迭代
The loop iterates only once in this code while in another code it iterates properly
为什么循环在此代码中只运行一次?
// Example program
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n=5;
int a[n];
for(int i=0;i<sizeof(a);i++)
{
cout<<"mohit jain"<<endl;
}
return 0;
}
在代码中循环迭代五次?
// Example program
#include <iostream>
#include <string>
using namespace std;
int main()
{
int a[5];
for(int i=0;i<sizeof(a);i++)
{
cout<<"mohit jain"<<endl;
}
return 0;
}
因此,请告诉我为什么它在第一个代码中迭代一次,而在第二个代码中迭代五次的正确原因。
考虑改用const int n = 5
。默认情况下,C++不允许动态大小数组(在这种情况下它是动态的,因为n
是非常量数组(。它之所以有效,只是因为在这种情况下,编译器使用某种扩展来分配数组,例如 gcc 的变量数组。
因此,第一个示例是非标准C++代码,sizeof
返回 1 而不是 5 * sizeof(int)
的原因在于特定于编译器的扩展实现。
顺便说一句,第二个循环运行 5 * sizeof(int)
次(大多数系统上为 20 次(,而不是 5 次。
相关文章:
- 为什么此代码的矢量迭代器没有停止?
- 我的代码在作为参数传入 .begin() 时不起作用,但在我将 .begin() 转换为迭代器后工作
- 如果我在下面的代码中使用 list 而不是 vector,为什么在我尝试在迭代器之间执行减法的行中编译失败?
- 在每次循环迭代时停止代码执行毫秒
- 在下面的 C++ 代码中,*(迭代器)和 *(++迭代器)是什么意思?
- 为什么在此代码中隐式转换为常量迭代器失败?
- 我通过迭代加法将二进制数转换为十进制并检查单个字符(请参阅代码)的方法有什么问题?
- 在此C++代码中,迭代器引用列表的哪个元素?
- 让宏将迭代参数传递到通过宏变量提供的代码体中
- 迭代列表以查找元素的出现.代码问题
- 重复输出的类型是怎么回事,它如何区分迭代次数和 Ascii 代码?
- 循环在此代码中仅迭代一次,而在另一个代码中正确迭代
- 如何使用迭代器显示以下代码的输出
- 如何调整我的代码以确保我的迭代代码接受用户输入
- 不使用循环如何迭代代码指令
- 在 OpenGL 中绘制立方体。迭代代码较短,但不起作用
- 段树的迭代代码
- ICU迭代代码点
- C++向量迭代代码无法编译,当向量作为对常量的引用传递时
- 使用模拟测试迭代代码——它有意义吗?