2013-06-11 3 views
-1

저는 프로그래밍에 초보자입니다. 배열과 혼동 스럽습니다. 줄을 어떻게 이해합니까? [rows] [cols] = x ++; 우리는 x = 1이라는 것을 알기 때문에이 문장에서 box [0] [0] = 2; x ++ 때문에? 내가 printf 상자 [행] [cols] 1 값을주는, 왜 우리가 그것을 상자로 설정할 때 1 [행] [cols] = x ++; 우리는 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]); 
    } 
} 
+0

a = x ++는 a에 x 값을 할당 한 후 1에 x를 더합니다. 역순으로하려면 ++ x – sashkello

+7

을 사용할 수 있습니다.'x','rows' 및'cols'는 초기화되지 않았으므로 정의되지 않았으므로 아무도 전혀 작동하지 않는 이유를 알 수 없습니다. – Paulpro

+0

x는 기본적으로 적어도 일부 컴파일러에서는 0으로 지정됩니다. – sashkello

답변

6

당신은 운영자 ++--에 대한 사후 증가 및 사전 증가 버전이 있음을 이해할 필요가있다. 귀하의 경우 문 box[rows][cols]= x++;은 할당 후 x 값을 업데이트하는 사후 증가 연산자를 사용합니다.

box[rows][cols]= ++x;을 시도하면 예상 출력은 2이됩니다.

또한 코드에서 rowscols 두 개의 변수를 초기화해야 초기화되지 않습니다. 따라서 다음과 같이 루프를 변경하십시오.

for(i=0; i<2; i++) 
{ 
    for(j=0; j<2; j++) 
    { 
     box[i][j]= x++; 
     printf("%d", box[j][j]); 
    } 
} 
관련 문제