#include <iostream> using namespace std; int main() { for (int i = 0; i < 10; i++) { cout << i << "입니다" << endl; } }
여기에서 for (int i = 0; i < 10; i++)을 for (int i = 0; i < 10; i)으로 바꾸면 왜 0입니다가 무한반복으로 나오나요?
현재 사용하신 for문에 아래와 같이 3가지 인자가 사용중입니다.
첫번째 인자
int i=0;
두번째 인자
i < 10
세번째 인자
i++
여기서 첫번째 인자는 초기값입니다.
반복을 돌 때 시작되는 첫번째 값이고 현재는 i라는 변수에 0이라는 초기값을 넣었습니다.
두번째 인자는 반복을 실행할 조건입니다.
여기서는 i가 10보다 작으면 for문의 중괄호 안에 있는 부분을 실행하게 됩니다.
세번째 인자는 중괄호 영역을 실행한 후 초기값을 변경시키는 문장입니다.
여기서는 i++을 써서 i에다가 1을 더합니다.
자, for문은 두번째 인자인 "조건"이 맞으면 한 번의 반복이 일어납니다.
즉, 여기서는 i < 10 이라는 조건이 맞으면 중괄호 안의 영역을 한 번 실행하게 됩니다.
중괄호 영역을 실행한 후에는 세번째 인자인 i++을 통해 i에다가 1을 더합니다.
그런 다음 다시 i < 10 이라는 조건을 확인해서 조건이 참이면 또다시 중괄호 안의 영역이 실행됩니다.
그런 다음 다시 또 i++을 통해 1을 증가시키고, 실행하고, 증가시키고, 실행하고, 증가시키고, ...
그러면서 i가 계속 1씩 증가하다가 i가 10이 되는 시점이 오면 i < 10 이라는 조건이 거짓이 되어
중괄호 영역을 실행하지 않고 for문을 빠져나오게 됩니다.
즉, for문은 어떤 조건에 의해 반복이 일어나게 할 때 사용하는 문법입니다.
그런데 질문자님처럼 i++ 부분을 그냥 i로 바꾸어 버리면
i값이 변하지 않아 i < 10 조건이 무한대로 참이 되어버립니다.
따라서 무한대로 반복을 실행하게 됩니다.
for(int i = 0; i < 10; i++)해석해드린다면 i는 0부터 시작해서 10보다 작을때까지 i값을 증가(i++)하면서 {count<<i}를 호출하게 되어있습니다.만약 i++대신 i를 이용한다면 i는 항상 0이란 값이 있게되있는거죠.언제가도 0<10이니까 무한반복할수밖에 없죵.ㅋㅋ
현재 사용하신 for문에 아래와 같이 3가지 인자가 사용중입니다.
첫번째 인자
두번째 인자
세번째 인자
여기서 첫번째 인자는 초기값입니다.
반복을 돌 때 시작되는 첫번째 값이고 현재는 i라는 변수에 0이라는 초기값을 넣었습니다.
두번째 인자는 반복을 실행할 조건입니다.
여기서는 i가 10보다 작으면 for문의 중괄호 안에 있는 부분을 실행하게 됩니다.
세번째 인자는 중괄호 영역을 실행한 후 초기값을 변경시키는 문장입니다.
여기서는 i++을 써서 i에다가 1을 더합니다.
자, for문은 두번째 인자인 "조건"이 맞으면 한 번의 반복이 일어납니다.
즉, 여기서는 i < 10 이라는 조건이 맞으면 중괄호 안의 영역을 한 번 실행하게 됩니다.
중괄호 영역을 실행한 후에는 세번째 인자인 i++을 통해 i에다가 1을 더합니다.
그런 다음 다시 i < 10 이라는 조건을 확인해서 조건이 참이면 또다시 중괄호 안의 영역이 실행됩니다.
그런 다음 다시 또 i++을 통해 1을 증가시키고, 실행하고, 증가시키고, 실행하고, 증가시키고, ...
그러면서 i가 계속 1씩 증가하다가 i가 10이 되는 시점이 오면 i < 10 이라는 조건이 거짓이 되어
중괄호 영역을 실행하지 않고 for문을 빠져나오게 됩니다.
즉, for문은 어떤 조건에 의해 반복이 일어나게 할 때 사용하는 문법입니다.
그런데 질문자님처럼 i++ 부분을 그냥 i로 바꾸어 버리면
i값이 변하지 않아 i < 10 조건이 무한대로 참이 되어버립니다.
따라서 무한대로 반복을 실행하게 됩니다.
for(int i = 0; i < 10; i++)해석해드린다면 i는 0부터 시작해서 10보다 작을때까지 i값을 증가(i++)하면서 {count<<i}를 호출하게 되어있습니다.만약 i++대신 i를 이용한다면 i는 항상 0이란 값이 있게되있는거죠.언제가도 0<10이니까 무한반복할수밖에 없죵.ㅋㅋ