【发布时间】:2020-08-23 15:01:45
【问题描述】:
这里我在输入 n 之前声明数组长度。数组声明时 n=0。
#include <iostream>
using namespace std;
int main() {
int n;
int sum=0;
int arr[n]={};
cin >> n;
for(int i=0;i<n;i++) {
cin >> arr[i];
cout << arr[i];
}
return 0;
}
对于下面的输入 6 1 2 3 4 5 6
我得到这个输出 1234。
谁能解释一下原因?
【问题讨论】:
-
您调用了未定义的行为。确定此特定结果的原因需要您的环境的详细信息。
-
你为什么认为
n会为零? -
@MikeCAT 试图在hackerrank 平台上运行代码。 hackerrank.com/challenges/simple-array-sum/problem
-
尽管有些编译器允许
int arr[n]={};,但它在标准 C++ 中是无效的,因为长度必须在编译时知道。您应该改用std::vector。 -
@Kathapatel 你很幸运。
n未初始化,可能有任何其他值,读取它会导致未定义的行为。