C 数组:越界计算

C 数组:越界计算,c,arrays,C,Arrays,在GCC v4.8.1版本的代码块v13.12上运行此程序时,会给出以下输出:2,0。有人能解释一下为什么或者怎么做吗 #include <stdio.h> int main ( ) { int function [ 2 ] [ 3 ] = { { 1, 2, 3 }, { 4 } }, i = 1, j = 1; function [ i + 1 ] [ j ] = function [ j ] [ i + 1 ]; // Assignment Statem

在GCC v4.8.1版本的代码块v13.12上运行此程序时,会给出以下输出:
2,0
。有人能解释一下为什么或者怎么做吗

#include <stdio.h>

int main ( )
{
    int function [ 2 ] [ 3 ] = { { 1, 2, 3 }, { 4 } }, i = 1, j = 1;
    function [ i + 1 ] [ j ] = function [ j ] [ i + 1 ];    // Assignment Statement
    printf ( "%d, %d", function [ i ] [ j ], function [ j ] [ i + 1 ] );

    return 0;
}
i
的值将是
100

function [ i + 1 ] [ j ]
越界访问数组将导致未定义的行为


函数[2]
是数组越界访问。

谢谢Gopi,你能帮我回答问题的第二部分吗?“i”的值为什么在变化?答案已经解决了。未定义的行为意味着任何事情都可能发生。为什么不停止注销数组的结尾?为什么你认为这样做是个好主意?@DMehta当我们说未定义的行为时。我们无法解释结果。我正在试验内存位置。@DMehta很好!!进行实验,但注意不要在实验中导致UB,并期望得到相同的解释
function [ i + 1 ] [ j ]