数组:越界计算

Arrays: Out of Bounds Computation

此程序在带有 GCC v4.8.1 的 CodeBlocks 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;
}

我还注意到在 Assignment Statement 中,表达式的 LHS 总是分配给变量 i。因此,例如,如果语句更改为:

function [ i + 1 ] [ j ] = 100;    // Assignment Statement

i 的值将是 100

function [ i + 1 ] [ j ]

越界访问数组将导致未定义的行为。

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