728x90

수식(expression)

: 수학 표기와 수학 기호를 사용하여 수학적 관계를 나타내는 것

  • 숫자, 상수, 변수, 연산자의 조합
  • 연산자와 피연산자로 나뉜다.

 

<연산자의 분류>

 

피연산자 수에 따른 연산자 분류

  1. 단항 연산자 : 피연산자의 수가 1개 : ++x; y—;
  1. 이항 연산자 : 피연산자의 수가 2개 : x + y; x - y;
  1. 삼항 연산자 : 연산자의 수가 3개 : x > y ? x : y;

 

산술 연산자

: 덧셈, 뺄셈, 곱셈, 나눗셈 등 사칙 연산을 수행

  • 컴퓨터의 가장 기본적인 연산

 

💡 나눗셈 연산자

정수형끼리의 나눗셈에서는 결과가 정수형으로 생성하고 소수점 이하는 버려진다.

 

💡 나머지 연산자
- 첫 번째 피연산자를 두 번째 피연산자로 나누었을 경우의 나머지를 계산
- 나머지 연산자를 이용한 짝수와 홀수 구분
EX) x % 2가 0이면 짝수
- 나머지 연산자를 이용한 5의 배수 판단
EX) x % 5가 0이면 5의 배수

 

  • 나머지 연산자 응용 프로그램
#include <stdio.h> 
#define SEC_PER_MINUTE  60

int main(void) 
{
    int input, minute, second;

    printf("초를 입력하시오. : ");
    scanf("%d", &input);

    minute = input / SEC_PER_MINUTE;
    second = input % SEC_PER_MINUTE;

    printf("%d초는 %d분 %d초 입니다.\n", input, minute, second);
    return 0;
}

 

부호 연산자

: 변수나 상수의 부호를 변경

x = -10;
y = -x; // 변수 y의 값은 10이 된다.

 

증감 연산자

: 변수의 값을 하나 증가시키거나 감소시키는 연산자

y = ++x; // 증가된 x의 값이 y에 대입(전위)
y = x++; // 먼저 대입 후 나중에 증가(후위)
#include <stdio.h>
int main(void)
{
	int x=10, y=10;

	printf("x=%d\n", x);
	printf("++x의 값=%d\n", ++x);
	printf("x=%d\n\n", x);

	printf("y=%d\n", y);
	printf("y++의 값=%d\n", y++);
	printf("y=%d\n", y);

	return 0;    
}

 

대입 연산자

: 연산자 기준 좌측의 변수 값에 우측 값을 할당한다.

y = 10 + (x = 2 + 7); // x = 9, y = 19

💡 대입 연산자는 연산순서가 오른쪽에서 시작한다!

 

복합 대입 연산자

: 대입 연산자(=)와 산술 연산자(+-/*%)를 합쳐 놓은 연산자

  • 소스를 간결하게 만들 수 있다.

 

 

관계 연산자

: 두 개의 피연산자를 비교하는 연산자

  • 결과 값은 참(1) 아니면 거짓(0)

 

#include <stdio.h>
int main(void)
{
    int x, y;

    printf("두개의 정수를 입력하시오: ");
    scanf("%d%d", &x, &y);
    printf("x == y의 결과값: %d\n", x == y);
    printf("x != y의 결과값: %d\n", x != y);
    printf("x > y의 결과값: %d\n", x > y);
    printf("x < y의 결과값: %d\n", x < y);
    printf("x >= y의 결과값: %d\n", x >= y);
    printf("x <= y의 결과값: %d\n", x <= y);

    return 0;
}

📢 대입 연산자(=)와 관계연산자(==) 헷갈리지 않기!

 

논리 연산자

: 여러 개의 조건을 조합하여 참과 거짓을 따지는 연산자

  • 결과값은 참(1) 아니면 거짓(0)

💡 컴퓨터는 0(거짓_False)이외의 값은 모두 참(True)으로 판단한다!

#include <stdio.h>

int main(void)
{
    int x, y;

    printf("두개의 정수를 입력하시오: ");
    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\n", x, !x);

    return 0;
}

 

단축 계산

  • && 연산, || 연산의 경우첫 번째 연산의 결과가 참이 아니면 두 번째 연산 수행 X
  • & 연산, | 연산의 경우첫 번째 연산의 결과가 참이 아니어도 두 번째 연산 수행

 

조건 연산자

max_value = (x > y) ? x : y;
  • x > y 가 참이면 x 가 수식의 값이 된다.
  • x> y 가 거짓이면 y 가 수식의 값이 된다.
#include <stdio.h>
int main(void)
{
    int x, y;

    printf("첫 번째 수 = ");
    scanf("%d", &x);
    printf("두 번째 수 = ");
    scanf("%d", &y);

    printf("큰 수 = %d \n", (x > y) ? x : y);
    printf("작은 수 = %d \n", (x < y) ? x : y);

    return 0;
}

콤마 연산자

: 콤마로 연결된 수식은 순차적으로 계산

x++, y++;

 

비트 연산자

: 비트 단위의 연산을 할 때 사용

#include <stdio.h>

int main(void)
{
/*'%08x'
'08' 8진수로 표현
'%x' : 8진수 형식 지정자*/
	printf("AND : %08X \n", 0x9 & 0xA);  
	printf("OR : %08X \n", 0x9 | 0xA);
	printf("XOR : %08X \n", 0x9 ^ 0xA);
	printf("NOT : %08X \n", ~0x9);
	printf("<< : %08X \n", 0x4 << 1);
	printf(">> : %08X \n", 0x4 >> 1);
	return 0;
}

💡 XOR을 이용한 암호화 알아보기!

#include <stdio.h>

int main(void)
{
/*'%08x'
'08' 8진수로 표현
'%x' : 8진수 형식 지정자*/
	printf("AND : %08X \n", 0x9 & 0xA);  
	printf("OR : %08X \n", 0x9 | 0xA);
	printf("XOR : %08X \n", 0x9 ^ 0xA);
	printf("NOT : %08X \n", ~0x9);
	printf("<< : %08X \n", 0x4 << 1);
	printf(">> : %08X \n", 0x4 >> 1);
	return 0;
}

 

형 변환(type conversion)

: 실행 중 데이터 타입을 변경하는 것

 

묵시적 형 변환

자료형의 크기가 작은 자료형에서 큰 자료형으로 컴파일러가 자동으로 처리한다.

 

명시적 형 변환

(int)3.141592 //int형으로 명시적으로 형 변환

보통 묵시적 형변환이 안되는 경우(크기가 큰 자료형에서 작은 자료형)에 사용

 

연산자 우선 순위

728x90

 


 

 

 

수식과 연산자

수식(expression)

www.notion.so

 

아래 노션 페이지에 C 공부 내용에 대해 업로드 합니다!

수정사항이나 질문사항의 경우 노션 댓글로 남겨주세요!(*•̀ᴗ•́*)و ̑̑

 

 

 

C 언어 이론 정리

조건문, 반복문 사용 시 중괄호로 명령문들 묶어주기 - 명령문 1개일 때 포함 (코드 수정 시 오류 방지)

www.notion.so

 


 

개발 환경

Visual Studio 2019
Visual Studio Code

작성 플랫폼

Notion

 

728x90

'🧑‍💻 Language > C·C++' 카테고리의 다른 글

[C 이론] 7. 반복문  (0) 2021.05.03
[C 이론] 6. 조건문  (0) 2021.05.03
[C 이론] 4. 변수와 자료형  (0) 2021.05.03
[C 이론] 3. C프로그램 구성요소  (0) 2021.05.03
[C 이론] 2. C프로그램 작성  (0) 2021.05.03