数组越界也能对?

P1001 A+B Problem

XXY2022 @ 2022-11-14 13:00:14

我想搞个RE,结果

#include<iostream>
using namespace std;
int main()
{
    int a[1];
    cin>>a[0]>>a[1];
    cout<<a[0]+a[1];
    return 0;
}

对了是怎么回事???


by VitrelosTia @ 2022-11-14 13:02:10

@XXY2022 没有越界,这样才越界

#include<iostream>
using namespace std;
int main()
{
    int a[1];
    cin>>a[0]>>a[114514];
    cout<<a[0]+a[114514];
    return 0;
}

by XXY2022 @ 2022-11-14 13:03:33

@VT_SODC3DC3BSLF 为什么?


by XXY2022 @ 2022-11-14 13:04:27

对了求互关 @VT_SODC3DC3BSLF


by VitrelosTia @ 2022-11-14 13:05:21

@XXY2022 事实上

#include<iostream>
using namespace std;
int main()
{
    int a[1];
    cin>>a[0]>>a[2];
    cout<<a[0]+a[2];
    return 0;
}

也能过


by Qiaoqia @ 2022-11-14 13:08:50

未定义行为。


by __zhy @ 2022-11-14 13:14:28

内存会混乱


by Vanishing_Stars @ 2022-11-14 13:28:41

@XXY2022 您的代码没有越界


by hukk @ 2022-11-14 13:33:05

这是 UB,在 UB 中一切皆有可能。

(UB:未定义行为)


by Resolute_Faith @ 2022-11-14 13:48:38

#include<bits/stdc++.h>
using namespace std;
int a[2],b[2];
int main(){
    cin>>a[0]>>a[1];
    cout<<b[-1]+b[-2];
}

by Mao_ @ 2022-11-14 14:32:32

@VT_SODC3DC3BSLF 好烂的数字


| 下一页