로그인 바로가기 하위 메뉴 바로가기 본문 바로가기
난이도
입문

모두를 위한 컴퓨터 과학 (CS50 2019)

임시 이미지 David J. Malan (데이비드 J. 말란)
http://www.boostcourse.org/cs112/forum/46610
좋아요 15512 수강생 34439
#include <stdio.h>
#include <unistd.h>

int main(void)
{
    for (int i = 1; ; i *= 2)
    {
        printf("%i\n", i);
        sleep(1);
    }
}
위 코드가 영상에서 사용된 코드입니다. 실행하면 1부터 차례로 2를 곱한 숫자가 나오고 오버플로우(?) 이후에도 0이 계속 출력되는데요.

#include <stdio.h>
#include <unistd.h>

int main(void)
{
    for (int i = 1; i *= 2;)
    {
        printf("%i\n", i);
        sleep(1);
    }
}

실수로 이렇게 입력했더니 2부터 출력되면서 오버플로우 메시지 이후로는 숫자가 출력되지 않습니다. 둘의 차이 좀 여쭐 수 있을까요?