[2025.03.08] (예습) 변수와 연산자

2025. 3. 8. 16:59·C/예습

[연산을 위한 연산자와 값의 저장을 위한 변수]

★ 덧셈을 위한 (+) 연산자(operator)

  • int : 정수의 저장이 가능한 메모리 공간 할당
  • num_1, num_2 : 그 메모리 공간의 이름을 num_1, num_2 라고 함.
// 덧셈 (+)
#include <stdio.h>

int main() {
    
    int num_1 = 3; //num_1, num_2라는 이름의 변수선언
    int num_2 = 4;
    printf("두 수의 합 = %d\n", num_1 + num_2);
    return 0;
}

 

 

 

★ 변수의 다양한 선언 및 초기화 방법

  • 초기화 : 선언된 변수에 처음 값을 저장하는 것
  • 초기화 이후에 저장된 값을 변경할 때에는 '대입' 또는 '대입연산'이라고 함.
  • 변수 선언만 하고 초기화를 하지 않으면, 쓰레깃값이 들어가 있음.
  • 따라서, 선언 후 초기화를 해줘야 함!! 
// 변수 선언 및 초기화
#include <stdio.h>

int main() {
    int num_1, num_2; // 변수 num_1, num_2 선언
    int num_3 = 30, num_4 = 40; // 변수 num_3, num_4 선언 및 초기화
    
    printf("num_1 : %d, num_2 : %d\n", num_1, num_2);

    num_1 = 10; // num_1 초기화
    num_2 = 20; // num_2 초기화

    printf("num_1 : %d, num_2 : %d\n", num_1, num_2);
    printf("num_3 : %d, num_4 : %d\n", num_3, num_4);
    
    return 0:
}

 

 


 

[C언어의 다양한 연산자 소개]

★ 대입 연산자(=)와 산술 연산자(+, -, *, /, %)

연산자 기능 결합방향
= 연산자 기준 오른쪽 값을 왼쪽 변수에 대입 ←
+ 두 값 더함 →
- 왼쪽에서 오른쪽 뺌 →
* 곱 →
/ 왼쪽을 오른쪽으로 나눔 →
% 왼쪽을 오른쪽으로 나눴을 때의 나머지 반환 →

[Talbe. 1] 대입 연산자와 산술 연산자

 

// 대입 연산자와 산술 연산자
#include <stdio.h>

int main() {
    int num_1 = 10, num_2 = 3;

    printf("%d + % d = %d\n", num_1, num_2, num_1+num_2);
    printf("%d - % d = %d\n", num_1, num_2, num_1-num_2);
    printf("%d x % d = %d\n", num_1, num_2, num_1*num_2);
    printf("%d ÷ % d 의 몫 = %d\n", num_1, num_2, num_1/num_2);
    printf("%d ÷ % d 의 나머지 = %d\n", num_1, num_2, num_1%num_2);
    
    return 0:
}

 

 

 

 

★ 복합 대입 연산자

  • Python 복합 대입 연산자랑 똑같이 씀
    • a = a + b    ☞    a += b
    • a = a - b     ☞    a  -= b
    • a = a * b     ☞    a  *= b
    • a = a / b      ☞    a  /= b
    • a = a % b    ☞    a %= b
// 복합 대입 연산자
#include <stdio.h>

int main() {
    int num_1 = 2, num_2 = 4, num_3 = 10;
    num_1 += 3; // num_1 = num_1 + 3
    num_2 *= 5; // num_2 = num_2 * 5
    num_3 %= 7; // num_3 = num_3 % 7

    printf("num_1 : %d\nnum_2 : %d\nnum_3 : %d\n", num_1, num_2, num_3);

    return 0;
}

 

 

 

 

★ 증가, 감소 연산자

  • 이 부분은 python이랑은 다름!!!!! 
  • Python에서는 num을 1씩 증가시키기 위해서 n += 1 의 형태로 사용했음.
  • C에서는 n++ 라고 쓰면 됨!!! 
  • 헷갈리니까 연산자가 앞에 있으면 연산자 먼저라고 생각하면 될듯??
연산자 기능 결합방향
++num num 값을 1 증가시키고, 속한 문장의 나머지 진행
(선 증가, 후 연산)
←
num++ 속한 문장을 진행하고, num 값을 1 증가시킴
(선 연산, 후 증가)
→
--num num 값을 1 감소시키고, 속한 문장의 나머지 진행
(선 감소, 후 연산)
←
num-- 속한 문장을 진행하고, num 값을 1 감소시킴
(선 연산, 후 감소)
→

[Table. 2] 증가, 감소 연산자

 

  • num_1++ 는 선 연산, 후 증가이기 때문에, num_1++는 그대로 20이고, 이후에는 21로 바뀜.
  • ++num_2는 선 증가, 후 연산이기 때문에, ++num_2는 21로 바뀜.
// 증가, 감소 연산자
#include <stdio.h>

int main() {
    int num_1 = 20;
    int num_2 = 20;
    
    printf("num_1 : %d\n", num_1);
    printf("num_1++ : %d\n", num_1++); // 선 연산, 후 증가
    printf("num_1 : %d\n\n", num_1);

    printf("num_2 : %d\n", num_2);
    printf("++num_2 : %d\n", ++num_2); // 선 증가, 후 연산
    printf("num2 : %d\n", num_2);

    return 0;
}

 

 

 

  • 또 다른 예제를 살표보면, 더 이해가 쉬울 수 있음.
  • num_1은 10이고, num_2는 먼저 num_1과 2를 더한 후, 다음 연산에서 1이 감소함. 
  • 즉, 다음 문장으로 넘가야 1이 감소함!! 
  • 따라서, num_2를 출력해보면 10 + 2 = 12 임.
#include <stdio.h>

int main() {
    int num_1 = 10;
    int num_2 = (num_1--) + 2;

    printf("num_1 : %d\n", num_1);
    printf("num_2 : %d\n", num_2);

    return 0;
}

 

 

 

 

★ 관계 연산자 (<, >, ==, !=, <=, >=)

  • 대소와 동등의 관계를 따지는 연산자
  • 두 개의 값을 비교하기 때문에, 비교 연산자라고도 불림.
  • 쓰이는 건 python이랑 똑같음.
  • Python에서는 bool 자용형이 있어서 관계 연산자의 결과가 True/False로 나왔는데, C언어는 bool 자료형이 따로 없고 0과 1로 표현됨. 0은 False고, 1은 True임.
연산자 기능 결합방향
> 연산자 기준 왼쪽이 크냐 →
< 연산자 기준 왼쪽이 작냐 →
== 연산자 기준 왼쪽과 오른쪽이 같냐 →
!= 연산자 기준 왼쪽과 오른쪽이 다르냐 →
<= 연산자 기준 왼쪽이 작거나 같냐 →
>= 연산자 기준 왼쪽이 크거나 같냐 →

[Table. 3] 관계 연산자

 

// 관계 연산자
#include <stdio.h>

int main() {
    int num_1 = 10;
    int num_2 = 12;
    int result_1, result_2, result_3;

    result_1 = (num_1 == num_2);
    result_2 = (num_1 <= num_2);
    result_3 = (num_1 > num_2);

    printf("result_1 : %d\n", result_1);
    printf("result_2 : %d\n", result_2);
    printf("result_3 : %d\n", result_3);

    return 0;
}

 

 

 

 

 

★ 논리 연산자 (&&, ||, !)

  • and, or, not 을 표현하는 연산자
  • Python에서는 and, or, not으로 썼는데, C는 &&, ||, ! 로 씀!!!!
  • 쓰이는 방법은 python과 동일함.
연산자 기능 결합방향
&& 연산자 기준 양쪽이 참이면 '참' 반환 →
|| 연산자 기준 왼쪽, 오른쪽 둘 중 하나라도 참이면 '참' 반환 →
! ex) !A
A가 참이면 '거짓', 거짓이면 '참' 반환
←

[Table. 4] 논리 연산자

// 논리 연산자
#include <stdio.h>

int main() {
    int num_1 = 10;
    int num_2 = 12;
    int num_3 = 0;
    int result_1, result_2, result_3, result_4, result_5, result_6;

    result_1 = (num_1 == 10 && num_2 == 12);     // 참
    result_2 = (num_1 == 100 && num_2 == 120);   // 거짓
    result_3 = (num_1 == 10 || num_2 == 120);    // 참
    result_4 = (num_1 == 100 || num_2 == 120);   // 거짓
    result_5 = (!num_1);                         // !참 = 거짓
    result_6 = (!num_3);                         // !거짓 = 참

    printf("result_1 : %d\n", result_1);
    printf("result_2 : %d\n", result_2);
    printf("result_3 : %d\n", result_3);
    printf("result_4 : %d\n", result_4);
    printf("result_5 : %d\n", result_5);
    printf("result_6 : %d\n", result_6);

    return 0;
}

 

 

 

 

★ 콤마 연산자 ( , )

  • 둘 이상의 변수를 동시에 선언하거나, 둘 이상의 문장을 한 행에 삽입하는 경우에 사용됨.
// 콤마 연산자
#include <stdio.h>

int main() {
    int num_1 = 1, num_2 = 2;
    printf("Hello! "), printf("I'm "), printf("Polibo! \n");

    num_1++, num_2++;
    printf("num_1 : %d, ", num_1), printf("num_2 : %d", num_2), printf("\n");

    return 0;
}

 

 

 

★ 연산자의 우선순위와 결합방향

  • 우선 순위 : 수학에서 곱하기를 더하기보다 먼저 하는 것과 같은 우선 순위
  • 결합 방향 : 우선순위가 동일한 두 연산자가 하나의 수식에 존재하는 경우, 어떤 순서대로 연산하느냐를 결정
순위 연산기호 연산자 결합방향
1위 () 함수호출 →
[] 인덱스
-> 간접지정
. 직접지정
num++
num--
후위증가 및 감소
2위 ++num
--num
전위증가 및 감소 ←
sizeof 바이트 단위 크기 계산
~ 비트 단위 NOT
! 논리 NOT
-, + 부호 연산 (음수, 양수 표현)
& 주소 연산
* 간접지정 연산
3위 (casting) 자료형 변환 ←
4위 *, /, % 곱셈, 나눗셈 관련 연산 →
5위 +, - 덧셈, 뺄셈 →
6위 <<, >> 비트이동 →
7위 <, >, <=, >= 대소비교 →
8위 ==, != 동등비교 →
9위 & 비트 AND →
10위 ^ 비트 XOR →
11위 | 비트 OR →
12위 &&  논리 AND →
13위 || 논리 OR →
14위 ? : 조건연산 →
15위 =, +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, |= 대입연산 ←
16위 , 콤마연산 →

[Table. 5] 연잔자의 우선순위와 결합방향

'C > 예습' 카테고리의 다른 글

[2025.03.09] (예습) 조건에 따른 흐름의 분기  (1) 2025.03.09
[2025.03.09] (예습) for문_연습문제  (2) 2025.03.09
[2025.03.08] (예습) while문_연습문제  (2) 2025.03.08
[2025.03.08] (예습) 반복실행을 명령하는 반복문  (0) 2025.03.08
[2025.03.08] (예습) scanf 연습문제 풀이  (0) 2025.03.08
'C/예습' 카테고리의 다른 글
  • [2025.03.09] (예습) for문_연습문제
  • [2025.03.08] (예습) while문_연습문제
  • [2025.03.08] (예습) 반복실행을 명령하는 반복문
  • [2025.03.08] (예습) scanf 연습문제 풀이
polibo
polibo
Polibo의 개발 성장기 지켜봐주십슈 (콩 싫어해요.)
  • polibo
    Polibo와 개발 콩나무 키우기
    polibo
  • 전체
    오늘
    어제
    • 분류 전체보기 (65)
      • Python (23)
      • C (32)
        • 본수업 (19)
        • 예습 (7)
        • 개인프로젝트01 - 로또 (3)
        • 개인프로젝트02 - 복켓몬 키우기 (2)
        • 개인프로젝트03 - 김복천국 POS기 (1)
        • 팀프로젝트01 - 용사 복이의 대모험 RPG (0)
        • 팀프로젝트02 - 메일 프로그램 (0)
      • TCP_IP (0)
      • DB (1)
      • C++ (7)
        • 개인프로젝트01 - 숫자야구 (0)
      • QT (1)
        • 개인프로젝트01 - 숫자야구 (0)
        • 팀프로젝트01 - 키오스크 (1)
        • 팀프로젝트02 - 퐘퐘이 (0)
        • 팀프로젝트03 - 개발의 민족 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    for문
    파이썬조건문
    c우선순위
    파이썬 숫자야구
    while문
    파이썬예제
    C
    파이썬
    파이썬반복문
    파이썬게임
    문자열
    c언어
    반복문
    코딩
    else if
    조건문
    if문
    순서도
    c언어 scanf
    Python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
polibo
[2025.03.08] (예습) 변수와 연산자
상단으로

티스토리툴바