[C] 7. 반복문, 연산자, 배열

Taeil Nam·2022년 6월 11일
0

C

목록 보기
7/18
post-thumbnail

1. 반복문(Loop)

  • 동일한 코드를 여러번 사용해야 되는 경우 사용.
  • 반복문을 사용하지 않을 경우, 같은 코드 여러 개 작성 필요. (비효율적)
  • 반복문 사용시 컴퓨터에게 원하는 만큼 코드를 반복하여 실행할 수 있도록 함. (효율적)

While(Indefinite loop)

  • 진입 조건이 만족되지 않을 때까지 계속 반복이 계속 필요할 때 사용.
  • 진입 조건이 true 일 경우, 영역 내의 코드를 반복 수행.
#include <stdio.h>

int main()
{
	int i = 1;
	while (i < 5)	// while 진입 조건 = i < 5.
	{
		printf("i = %d\n", i);	// 진입 조건이 true 일 경우 실행되는 코드.
		++i;
	}

	return 0;
}

While 진입 조건에 scanf() 반환값 사용하기

  • scanf() 의 반환 값 = 입력 받은 변수의 개수.
  • scanf() 의 자료형에 맞지 않는 값을 입력 받을 경우, 변수에 저장이 되지 않음.
#include <stdio.h>

int main()
{
	int num, sum = 0;
	int status;

	printf("Enter an integer (q to quit) : ");

	status = scanf("%d", &num);	// scanf() 의 반환 값 = 입력 받은 변수의 개수.

	while (status == 1)
	{
		sum = sum + num;

		printf("Enter next integer (q to quit) : ");
		status = scanf("%d", &num);	// scanf() 의 반환 값 = 입력 받은 변수의 개수.
	}

	printf("Sum = %d\n", sum);

	return 0;
}

do while

  • 반복문을 중지하고 빠져나올지 말지 탈출 조건을 판별.
  • while = 진입 조건 판별, do while = 탈출 조건 판별.
  • 특정 코드를 무조건 한번 수행해야 되는 경우 사용.
#include <stdio.h>


int main()
{
	int num = 0;
    const int code = 314;	// 탈출 code = 314.

    do
    {
      printf("Enter secret code : ");
      scanf("%d", &num);	// num 변수에 정수를 입력 받음.
    }
    while (num != code);	// 입력 받은 값과 탈출 code가 다르면 do 코드 반복.
    
    printf("Good!");		// 입력 받은 값과 탈출 code가 동일하면 do while 탈출 후 Good! 출력. 
    
    return 0;
}

For(Counting loop)

  • 반복문 중에 가장 많이 사용 됨.
  • 미리 정해진 조건 만큼 반복이 필요할 때 사용.
  • counter 초기 값(initialization), 조건(check), 변화 값(change)을 사용하여 선언.
#include <stdio.h>

int main()
{
	for (int i = 1; i < 5; ++i)	// counter 변수 = int i, 초기 값 = 1, 조건 = i < 5, 변화 값 = +1.
	{
		printf("i = %d\n", i);	// i 가 1부터 1씩 증가할 때마다 실행되는 코드.
	}							// 조건 i < 5 이 false가 될 경우 for 문 종료. 

	return 0;
}

2. 관계 연산자(Relational operator)

  • 값의 관계를 판단하는 연산자.

"<"

  • 왼쪽이 오른쪽보다 작음.

"<="

  • 왼쪽이 오른쪽보다 작거나 같음.

"=="

  • 왼쪽과 오른쪽이 같음.

">="

  • 왼쪽이 오른쪽보다 크거나 같음.

">"

  • 왼쪽이 오른쪽보다 큼.

"!="

  • 왼쪽과 오른쪽이 다름.

관계 연산자의 우선순위

  • 동일 우선순위에서의 연산 순서는 왼쪽부터 오른쪽.
  1. <, <=, >, >=
  2. ==, !=

3. 대입 연산자(Assignment operator)

  • 코드 간결성을 위해 사용.

"+="

  • 더하기

"-="

  • 빼기

"*="

  • 곱하기

"/="

  • 나누기

"%="

  • 나머지
#include <stdio.h>

int main()
{
	int i = 0;

	i += 1; 	// i = i + 1; 과 동일
	i -= 1; 	// i = i - 1; 과 동일
	i *= 1; 	// i = i * 1; 과 동일
	i /= 1; 	// i = i / 1; 과 동일
	i %= 1; 	// i = i % 1; 과 동일
}

4. 콤마 연산자(Comma operator)

","

  • 하나의 큰 표현식을 여러 개로 나눌 때 사용.
  • 콤마의 왼쪽이 먼저 연산된 후 오른쪽 연산 수행.
#include <stdio.h>

int main()
{
	int a, b, c;

	a = b = 1, c = 2;	// 콤마(,) 왼쪽의 a = b = 1 먼저 수행 후 c = 2 수행.
}

5. 배열(Array)

  • 하나의 변수에 여러 개의 값을 저장하기 위해 사용.
  • 여러 개의 memory 공간을 할당 받는 것과 동일.
  • 배열의 크기(memory 공간 개수) 만큼 값 저장 가능.
  • 대괄호로 배열의 크기를 선언.
  • 배열의 순서는 0부터 시작.
  • 배열안의 위치를 나타내는 것 = 인덱스(Index).
  • 배열의 크기를 넘어가는 인덱스 참조시, 런타임 에러 발생.
    💡 배열의 크기가 5인 경우 배열의 순서는 0, 1, 2, 3, 4 이다.
#include <stdio.h>

int main()
{
    int my_numbers[5];

    my_numbers[0] = 1;	// 인덱스 = 0, 값 = 1
    my_numbers[1] = 2;	// 인덱스 = 1, 값 = 2
    my_numbers[2] = 3;	// 인덱스 = 2, 값 = 3
    my_numbers[3] = 4;	// 인덱스 = 3, 값 = 4
    my_numbers[4] = 5;	// 인덱스 = 4, 값 = 5

    return 0;
}

런타임 에러와 컴파일 에러

1) 런타임 에러(Runtime error)

  • 컴파일이 다 끝나고 코드가 실행 중일 때 오류가 발생하는 것.

2) 컴파일 에러(Compilation error)

  • 컴파일 중에 오류가 발생하는 것.

🚩 출처 및 참고자료 : 홍정모의 따라하며 배우는 C 언어 (따배씨)

0개의 댓글