j+1 는 j값을 변경 하지 않습니다.
i = j +1;
이렇게 하면 i가 j+1값을 가질 뿐 j값은 그대로 입니다.
j++은 j값 을 1을 증가 시킵니다.
for 문에서 j++을 이용하는 것은 j를 계속 해서 증가 시키겠다는 의미 입니다.
printf("%4d", j+1); 에서 j++로 변경 하신다면
같은 결과를 얻기 위해서는 for문도 수정 해야 합니다.
아래와 같이 수정 한것을 비교 해보세요
for(j=0;j<i+1;)
printf("%4d", ++j);
++j 와 j++의 차이도 있습니다.
먼저 j값을 증가 시키고 LValue쪽으로 반영 시키겠다.
j값을 LValue에 반영 시키고 j를 증가 하겠다.
차이가 있습니다.
j+1 , ++j, j++ 이 모두 다르 다는 사실을 명심 하세요.
그럼.
김현규 님이 쓰신 글 :
: #include<stdio.h>
: int main()
: {
: int i, j, n;
:
: printf("\nPlease write the number:");
: scanf("%d", &n);
:
: for(i=0;i<n;i++)
: {
: for(j=0;j<i+1;j++)
: printf("%4d", j+1);
: printf("\n");
: }
: return 0;
: }
:
: 보시다시피 for문에서 맴돌고있습니다.
: 이 for문 중에
:
: printf("%4d", j+1);
:
: 라는 부분 중에 j+1을 j++로 바꾼 후 5를 입력하면
:
: 1
: 1 2
: 1 2 3
: 1 2 3 4
: 1 2 3 4 5
:
: 로 입력되던게
:
: 0
: 0
: 0 2 2
: 0 2 2
: 0 2 2 4
:
: 로 입력됩니다.
:
: 이유는 무엇이고 도데체 "+1"과 "++"의 차이는 무엇입니까?
:
:
: 추가질문: %d와 &n, 그리고 %4d와 %d의 차이점도 가르쳐주시면 감사하겠습니다.
|