본문 바로가기
PROGRAMMING/C

[POSTECH MOOC] 컴퓨터공학 입문Ⅰ - 4

by 안녕나는현서 2021. 4. 5.
728x90

본 내용은 POSTECH '청년 AI · Big Data 아카데미 온라인 기초과정'을 수강하며 정리한 내용입니다.

 

Ⅳ 연산자

 

<연산자(사칙, 관계, 논리 연산자)>

 

- 연산자

  • 산술 연산자 +, -, *, / 기호와 같이 이미 정의된 연산을 수행하는 기호나 키워드를 의미
  • 문제를 해결하는 방법에서 도구와 같은 역할

- 피연산자

  • 연산에 참여하는 변수나 값

 

- 산술 연산자

  • +   -   *   /   %
  • / : 두 수를 나눈 몫
  • % : 두 수를 나눈 나머지

- 관계 연산자 (relational operator)

  • >   <   ==   !=   >=   <=
  • 2개의 피연산자의 관계(크기)를 비교하기 위한 연산자
  • 관계 연산자가 포함된 수식의 결과는 1(참) 아니면 0(거짓)
  • printf()를 사용하여 출력할 경우 결과가 참이면 1, 거짓이면 0을 출력

- 증감 연산자

  • ++    --
  • for문에서 주로 사용

- 논리 연산자 (logical operator)

  • &&    ||    !
  • && : and, 둘 다 참이어야 참
  • || : or, 둘 중 하나만 참이면 참
  • ! : not, 참이면 거짓, 거짓이면 참
  • 두 개 또는 하나의 논리 값을 0이나 1의 논리 값으로 평가하기 위한 연산자
  • C 언어는 참과 거짓이라는 상수는 없으며 0, 0.0, '\0'은 거짓으로, 0이 아닌 모든 값은 참으로 간주 (3 && 4 -> 1)

- 조건 연산자 (조건 삼항 연산자)

  • (수식1)? 수식2 : 수식3
  • 수식1의 참과 거짓을 따져서 참일 경우 수식2가, 거짓일 경우 수식3이 수행됨

- sizeof 연산자

  • sizeof(데이터타입)

- 대입 연산자(assignment operator)

  • =    +=    -=    /=   %=
  • 변수의 저장 값을 대입하는 = 기호가 대입(할당) 연산자
  • = 연산자 오른쪽 수식을 먼저 계산하고 결과 값을 왼쪽 변수에 대입
  • 대입 연산자의 왼쪽 부분에는 반드시 변수만이 가능, 대입 연산자 왼쪽에 온 변수는 값이 변경됨
  • 수식의 결과 값을 변수에 대입하지 않으면 프로그램에는 영향이 없음

- 연산자 우선순위

<연산자 예제 실습>

 

- 사칙연산 예제 실습 : 2개의 값을 입력받아 + - * / % 연산 후 출력

#include <stdio.h>

int main(void)
{
	int a, b, add, sub, mul, div, mod;
	
	printf("정수1 입력하세요 : ");
	scanf("%d", &a);
	
	printf("정수2 입력하세요 : ");
	scanf("%d", &b); 
	
	add = a+b;
	sub = a-b;
	mul = a*b;
	div = a/b;
	mod = a%b;
	
	printf("%d + %d = %d 입니다 \n", a, b, add);
	printf("%d - %d = %d 입니다 \n", a, b, sub);
	printf("%d * %d = %d 입니다 \n", a, b, mul);
	printf("%d / %d = %d 입니다 \n", a, b, div);
	printf("%d %% %d = %d 입니다 \n", a, b, mod);
	
	return 0;
}

  • %를 밖으로 출력하기 위해서는 %%
  • "를 밖으로 출력하기 위해서는 \"

- 관계 연산 예제 : 문자와 정수를 입력 받아 관계 연산 결과 출력

#include <stdio.h>

int main(void)
{
	int x, y;
	char c;
	 
	printf("문자 1개 입력하세요 : ");
	scanf("%c", &c);
	
	printf("입력한 문자 %c의 아스키 10진수는 %d입니다 \n", c, c);
	printf("입력한 문자 %c의 다음 문자는 %c입니다 \n", c, c+1);
	printf("(%c < %c)는 %d입니다 \n", c, c+1, (c<c+1));
	
	printf("정수 2개 입력하세요 : ");
	scanf("%d %d", &x, &y);
	
	printf("(%d >= %d)는 %d입니다 \n", x, y, (x>=y));
	printf("(%d == %d)는 %d입니다 \n", x, y, (x==y));
	printf("(%d != %d)는 %d입니다 \n", x, y, (x!=y));
	
	return 0;
}

 

- 논리 연산 예제

#include <stdio.h>

int main(void)
{
	printf("(3>2) && (1==2)의 결과는 %d 입니다. \n", (3>2) && (1==2));
	printf("(3>2) || (1==2)의 결과는 %d 입니다. \n", (3>2) || (1==2));
	printf("0.0 && 5의 결과는 %d 입니다. \n", 0.0 && 5);
	printf("(5>2) != (1==2)의 결과는 %d 입니다. \n", (5>2) != (1==2));
	printf("(3>5) || !(2==1)의 결과는 %d 입니다. \n", (3>5) || !(2==1));
	printf("0.1 || 0.0의 결과는 %d 입니다. \n", 0.1 || 0.0);
	printf("('A'<'B') || 0.0의 결과는 %d 입니다. \n", 'A'<'B' || 0.0);
	
	return 0;
}

  • 단축 연산 : &&이나 || 연산에서 앞부분만 보고 결과를 출력할 수 있는 경우, 뒷부분은 보지 않음
728x90

댓글