【发布时间】:2026-01-28 14:25:01
【问题描述】:
为什么循环在这段代码中只运行一次?
// 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;
}
所以请告诉我为什么它在第一个代码中迭代一次而在第二个代码中迭代五次的正当理由。
【问题讨论】:
-
VLA 在 C++ 中是非标准的。
-
请注意 VLA 是一个可选的扩展。它的大小是运行时决定的,所以类型不同。
-
除非您的编译器损坏或做错了什么,否则它们都应该迭代 20 次(假设 sizeof(int) == 4)。见:ideone.com/2PUZRR
-
尝试在这两种情况下打印
sizeof(a)的值,然后找出差异(如果有)。