-2
在CodeBlocks v13.12上運行GCC v4.8.1時,此程序給出輸出: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
。
謝謝戈皮,你可以幫助第二部分的問題即。爲什麼'我'的價值在變化? –
答案已經處理了。 **未定義的行爲**意味着任何事情都可能發生。你爲什麼不停止寫下陣列的末尾?你爲什麼認爲這樣做會是一個好主意? –
@ DMehta當我們說未定義的行爲。我們無法解釋它的結果。 – Gopi