当我尝试查找 sizeof(A) 时,其中 A 的类型为 int,大小为“n”,n 是一个未定义的 int。我得到的输出为 496,当我给 n 一个值然后检查它时,sizeof(A) 给了我相同的值 496。 我知道数组是静态数据类型,因此无论“n”如何,它都会有内存,但有人能解释一下值 496 来自哪里吗?
int main()
{
int n;
int A[n];
cout<<sizeof(A)<<"\n";
cin>>n;
cout<<sizeof(A);
return 0;
}
最佳答案
where A is of type int with size as 'n'
int n; int A[n];
A 的类型不是“大小为 'n' 的 int”。 A 的类型是 int[n],它是 n 个整数的数组。然而,由于 n 不是编译时常数,因此该程序格式错误。如果我们不考虑格式错误,n
的值是不确定的。读取不确定的值会导致未定义的行为。
anyone explain me where the value 496 came from?
它来自未定义的行为。您可以通过阅读生成该结果的编译程序的汇编来找到更多详细信息。
关于c++ - 为什么C++中没有定义n的sizeof(array A[n])是固定的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68992461/