-1

私はプログラミングの初心者です。配列と混同しています。box[rows][cols] = x++; という行をどのように理解していますか? x=1 であることがわかっているため、このステートメントでは box[0][0] = 2; を意味します。x++のせい?box[row][cols] を printf して値 1 を返すと、box[rows][cols]= x++; と設定すると 1 になるのはなぜですか。x=1 を設定してから x++ を設定すると、どちらが 2 になるはずですか?

int box[2][2], rows, cols, x, i, j;

for(i=1; i<2; i++)
{
    for( j=1; j<2; j++)
    {
       box[rows][cols]= x++;
       printf("%d", box[rows][cols]);  
    }
}
4

1 に答える 1

6

++オペレータおよびには、ポスト インクリメント バージョンとプレ インクリメント バージョンがあることを理解する必要があります--。あなたの場合、ステートメントbox[rows][cols]= x++;は、代入後に x の値を更新するポストインクリメント演算子を使用します。

試してみるbox[rows][cols]= ++x;と、期待どおりの出力が得られます2

rowsまた、コードでは、2 つの変数を初期化する必要があり、初期化されていませんcols。したがって、ループを次のように変更します。

for(i=0; i<2; i++)
{
    for( j=0; j<2; j++)
    {
       box[i][j]= x++;
       printf("%d", box[j][j]);  
    }
}
于 2013-06-11T03:16:56.787 に答える