当使用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
。
答案 0 :(得分:2)
function [ i + 1 ] [ j ]
访问数组越界将导致未定义的行为。
function [ 2 ]
是数组越界访问。