Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

공부해보잠

연산자 본문

자격증/정보처리

연산자

heejk 2025. 2. 9. 23:33
산술 연산자

 

산술 연산자는 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 연산 등을 수행하는 연산자입니다.
C, Java, Python 모두 기본적인 연산자는 거의 동일하지만, 나눗셈(/)과 거듭제곱(**)에서 차이점이 있습니다.

 

C, Java, Python 산술 연산자 비교표

연산자 설명 C 예제 JAVA 예제 Python 예제
+ 덧셈(Addition) 5 + 3  8 5 + 3  8 5 + 3  8
- 뺄셈(Subtraction) 5 - 3  2 5 - 3  2 5 - 3  2
* 곱셈(Multiplication) 5 * 3  15 5 * 3  15 5 * 3  15
/ 나눗셈(Division) 10 / 3  3
 (정수끼리 나누면 정수)
10 / 3  3 
(정수끼리 나누면 정수)
10 / 3  3.3333 
(항상 실수 반환)
% 나머지(Modulus) 10 % 3  1 10 % 3  1 10 % 3  1
** 거듭제곱(Exponentiation) 없음 없음 2 ** 3  8

 

산술연산자 예제

C예제

#include <stdio.h>
#include <math.h>  // pow 함수 사용

int main() {
    int a = 10, b = 3;
    float x = 10.0, y = 3.0;

    printf("덧셈: %d\n", a + b);
    printf("뺄셈: %d\n", a - b);
    printf("곱셈: %d\n", a * b);
    printf("정수 나눗셈: %d\n", a / b);  // 정수 나눗셈 → 몫만 반환
    printf("실수 나눗셈: %.2f\n", x / y);  // 실수 연산
    printf("나머지: %d\n", a % b);
    printf("거듭제곱: %.2f\n", pow(a, b)); // pow 함수 사용 (10^3)

    return 0;
}

JAVA 예제

public class Main {
    public static void main(String[] args) {
        int a = 10, b = 3;
        double x = 10.0, y = 3.0;

        System.out.println("덧셈: " + (a + b));
        System.out.println("뺄셈: " + (a - b));
        System.out.println("곱셈: " + (a * b));
        System.out.println("정수 나눗셈: " + (a / b));  // 정수 나눗셈 → 몫만 반환
        System.out.println("실수 나눗셈: " + (x / y));  // 실수 연산
        System.out.println("나머지: " + (a % b));
        System.out.println("거듭제곱: " + Math.pow(a, b)); // Math.pow 함수 사용 (10^3)
    }
}

Python 예제

a, b = 10, 3
x, y = 10.0, 3.0

print("덧셈:", a + b)
print("뺄셈:", a - b)
print("곱셈:", a * b)
print("정수 나눗셈:", a // b)  # 정수 나눗셈
print("실수 나눗셈:", x / y)  # 자동으로 실수 연산
print("나머지:", a % b)
print("거듭제곱:", a ** b)  # 10^3

실행 결과 비교

연산자 C 결과 JAVA 결과 Python 결과
+ (덧셈) 10 + 3 = 13 10 + 3 = 13 10 + 3 = 13
- (뺄셈) 10 - 3 = 7 10 - 3 = 7 10 - 3 = 7
* (곱셈) 10 * 3 = 30 10 * 3 = 30 10 * 3 = 30
/ (정수 나눗셈) 10 / 3 = 3 10 / 3 = 3 10 // 3 = 3
/ (실수 나눗셈) 10.0 / 3.0 = 3.33 10.0 / 3.0 = 3.33 10.0 / 3.0 = 3.33
% (나머지) 10 % 3 = 1 10 % 3 = 1 10 % 3 = 1
** (거듭제곱) pow(10,3) = 1000.00 Math.pow(10,3) = 1000.00 10 ** 3 = 1000
  • 덧셈, 뺄셈, 곱셈, 나머지는 C, Java, Python 모두 동일
  • C와 Java는 정수끼리 나누면 몫만 반환 (10 / 3 = 3)
  • Python은 / 연산이 항상 실수 결과를 반환 (10 / 3 = 3.3333)
  • Python은 **(거듭제곱) 연산자를 제공, C와 Java는 pow() 함수를 사용해야 함
  • C에서 소수점 결과를 원하면 float이나 double을 사용해야 함.
  • Java에서 소수점 이하 결과를 원하면 double 사용해야 함.

증감 연산자(Increment & Decrement Operators)
  • 증감 연산자는 변수의 값을 1 증가(++)하거나 1 감소(--) 시킬 때 사용됩니다.
  • 이 연산자는 반복문에서 자주 사용되며, a = a + 1 또는 a = a - 1을 간단하게 표현할 수 있습니다.

증감 연산자 종류 및 설명

연산자 설명 예제(초기값 a=5) 결과
++a 전위 증가 (Pre-Increment) → 먼저 증가 후 연산 b = ++a; b = 6, a = 6
a++ 후위 증가 (Post-Increment) → 연산 후 증가 b = a++; b = 5, a = 6
--a 전위 감소 (Pre-Decrement) → 먼저 감소 후 연산 b = --a; b = 4, a = 4
a-- 후위 감소 (Post-Decrement) → 연산 후 감소 b = a--; b = 5, a = 4
  • 전위 연산(++a, --a)  먼저 증가/감소하고 연산 수행
  • 후위 연산(a++, a--)  현재 값을 먼저 사용한 후 증가/감소

C, Java, Python 증감 연산자 비교

연산자 C JAVA Python
++a (전위 증가) 사용 가능 사용 가능 없음
a++ (후위 증가) 사용 가능 사용 가능 없음
--a (전위 감소) 사용 가능 사용 가능 없음
a-- (후위 감소) 사용 가능 사용 가능 없음
a += 1 사용 가능 사용 가능 Python에서는 이 방식 사용
a -= 1 사용 가능 사용 가능 Python에서는 이 방식 사용
  • C와 Java는 ++, -- 사용 가능 (전위/후위 증가 및 감소 지원)
  • Python은 ++, -- 연산자가 없고 +=, -= 사용해야 함

증감연산자 예제

C 언어 예제
#include <stdio.h>

int main() {
    int a = 5, b;

    // 전위 증가
    b = ++a;  
    printf("전위 증가: a = %d, b = %d\n", a, b);  // a = 6, b = 6

    // 후위 증가
    a = 5;  // 초기화
    b = a++;  
    printf("후위 증가: a = %d, b = %d\n", a, b);  // a = 6, b = 5

    // 반복문에서 사용
    for (int i = 0; i < 3; i++) {  
        printf("i: %d\n", i);
    }

    return 0;
}

JAVA 예제

public class Main {
    public static void main(String[] args) {
        int a = 5, b;

        // 전위 증가
        b = ++a;
        System.out.println("전위 증가: a = " + a + ", b = " + b); // a = 6, b = 6

        // 후위 증가
        a = 5;  // 초기화
        b = a++;
        System.out.println("후위 증가: a = " + a + ", b = " + b); // a = 6, b = 5

        // 반복문에서 사용
        for (int i = 0; i < 3; i++) {
            System.out.println("i: " + i);
        }
    }
}

Python 예제(++ 대신 += 1 사용)

a = 5

# 전위 증가처럼 사용 (Python에서는 += 1 사용)
a += 1  
print("a += 1 후:", a)  # 출력: 6

# 후위 증가처럼 사용하려면 먼저 변수에 저장 후 증가
b = a
a += 1
print("후위 증가 후: a =", a, ", b =", b)  # 출력: a = 7, b = 6

# 반복문에서 사용
for i in range(3):
    print("i:", i)

C언어

  • 전위 증가(++a)a를 먼저 증가시킨 후 b에 저장
  • 후위 증가(a++)b에 먼저 저장한 후 a를 증가
  • 반복문에서 i++ 사용하여 i를 1씩 증가시키며 실행

JAVA

  • C와 동일한 방식으로 작동
  • 반복문에서 i++을 활용하여 증가

Python

  • Python에서는 a++ 사용 불가 → a += 1로 대체해야 함
  • 반복문에서 range(3)을 사용하여 반복 실행

실행 결과 비교

연산자 C 결과 JAVA 결과 Python 결과
++a (전위 증가) a = 6, b = 6 a = 6, b = 6 a += 1으로 대체
a++ (후위 증가) a = 6, b = 5 a = 6, b = 5 a += 1으로 대체
반복문 (i++) 0 1 2 0 1 2 0 1 2
  • C와 Java에서는 ++, -- 사용 가능
  • Python에서는 ++, -- 사용 불가 → += 1, -= 1로 대체
  • 반복문에서 i++ 사용하여 i를 1씩 증가시키며 실행
  • Python에서는 range(n)을 활용하여 반복 실행

관계 연산자(Relational Operators)
  • 관계 연산자는 두 개의 값(변수)을 비교하여 관계(크기, 동등 여부)를 판단하는 연산자입니다.
  • 비교 결과는 항상 참(true, 1) 또는 거짓(false, 0) 으로 반환됩니다.

C, Java, Python 관계 연산자 비교표

연산자 설명 C 예제 JAVA 예제 Python 예제
== 같다(Equal) a == b a == b a == b
!= 같지 않다(Not Equal) a != b a != b a != b
> 크다(Greater Than) a > b a > b a > b
< 작다(Less Than) a < b a < b a < b
>= 크거나 같다(Greater Than or Equal) a >= b a >= b a >= b
<= 작거나 같다(Less Than or Equal) a <= b a <= b a <= b
  • C, Java, Python에서 관계 연산자는 모두 동일하게 동작
  • 비교 결과는 true(1) 또는 false(0)을 반환

관계연산자 예제

C 언어 예제

#include <stdio.h>

int main() {
    int a = 10, b = 5;

    printf("a == b : %d\n", a == b);  // 같으면 1, 다르면 0
    printf("a != b : %d\n", a != b);  
    printf("a > b  : %d\n", a > b);  
    printf("a < b  : %d\n", a < b);  
    printf("a >= b : %d\n", a >= b);  
    printf("a <= b : %d\n", a <= b);  

    return 0;
}

JAVA 예제

public class Main {
    public static void main(String[] args) {
        int a = 10, b = 5;

        System.out.println("a == b : " + (a == b));  
        System.out.println("a != b : " + (a != b));  
        System.out.println("a > b  : " + (a > b));  
        System.out.println("a < b  : " + (a < b));  
        System.out.println("a >= b : " + (a >= b));  
        System.out.println("a <= b : " + (a <= b));  
    }
}

Python 예제

a, b = 10, 5

print("a == b :", a == b)  
print("a != b :", a != b)  
print("a > b  :", a > b)  
print("a < b  :", a < b)  
print("a >= b :", a >= b)  
print("a <= b :", a <= b)

C언어

C에서는 1(true) 또는 0(false)로 결과 출력

 

JAVA

Java에서는 true 또는 false로 출력됨

 

Python

Python에서도 true 또는 false로 출력됨

 

실행 결과 비교

연산자 C 결과 JAVA 결과 Python결과
a == b 0 (false) false False
a != b 1 (true) true True
a > b 1 (true) true True
a < b 0 (false) false False
a >= b 1 (true) true True
a <= b 0 (false) false False

C는 1(true) / 0(false), Java와 Python은 true / false 출력

 

관계연산자는 조건문에서 많이 활용됩니다 예를 들어

C에서 관계 연산자 사용
#include <stdio.h>

int main() {
    int a = 10, b = 5;

    if (a > b) {
        printf("a는 b보다 큽니다.\n");
    }

    return 0;
}

Java에서 관계 연산자 사용
public class Main {
    public static void main(String[] args) {
        int a = 10, b = 5;

        if (a > b) {
            System.out.println("a는 b보다 큽니다.");
        }
    }
}

Python에서 관계 연산자 사용
a, b = 10, 5

if a > b:
    print("a는 b보다 큽니다.")

 

 

  • 조건문에서 자주 사용되며, if 문과 함께 활용 가능
  • C, Java, Python 모두 동일한 논리로 작동

C, Java, Python에서 관계 연산자는 동일하게 동작
C는 1(true), 0(false), Java와 Python은 true, false 출력
조건문(if)에서 많이 사용됨


비트 연산자(Bitwise Operators)
  • 비트 연산자는 이진수(0과 1) 단위로 연산을 수행하는 연산자입니다.
  • 컴퓨터 내부에서 데이터를 직접 조작할 때 사용되며, 비트 단위의 빠른 계산이 필요할 때 유용합니다.

C, Java, Python 비트 연산자 비교표

연산자 설명 C 예제 Java 예제 Python 예제
& 비트 AND a & b a & b a & b
` ` 비트 OR `a b`
^ 비트 XOR a ^ b a ^ b a ^ b
~ 비트 NOT (보수) ~a ~a ~a
<< 왼쪽 시프트 a << 2 a << 2 a << 2
>> 오른쪽 시프트 a >> 2 a >> 2 a >> 2
  • C, Java, Python에서 비트 연산자는 동일하게 동작
  • Python의 ~(비트 NOT)는 부호 비트 때문에 결과가 다를 수 있음
C언어 예제

#include <stdio.h>

int main() {
    int a = 5, b = 3;  // 5 = 101, 3 = 011 (이진수)

    printf("a & b  = %d\n", a & b);  // 비트 AND (결과: 1)
    printf("a | b  = %d\n", a | b);  // 비트 OR (결과: 7)
    printf("a ^ b  = %d\n", a ^ b);  // 비트 XOR (결과: 6)
    printf("~a     = %d\n", ~a);     // 비트 NOT (결과: -6, 2의 보수)
    printf("a << 1 = %d\n", a << 1); // 왼쪽 시프트 (결과: 10)
    printf("a >> 1 = %d\n", a >> 1); // 오른쪽 시프트 (결과: 2)

    return 0;
}

Java 예제

public class Main {
    public static void main(String[] args) {
        int a = 5, b = 3;  // 5 = 101, 3 = 011 (이진수)

        System.out.println("a & b  = " + (a & b));  // 비트 AND (결과: 1)
        System.out.println("a | b  = " + (a | b));  // 비트 OR (결과: 7)
        System.out.println("a ^ b  = " + (a ^ b));  // 비트 XOR (결과: 6)
        System.out.println("~a     = " + (~a));     // 비트 NOT (결과: -6)
        System.out.println("a << 1 = " + (a << 1)); // 왼쪽 시프트 (결과: 10)
        System.out.println("a >> 1 = " + (a >> 1)); // 오른쪽 시프트 (결과: 2)
    }
}

Python 예제

a, b = 5, 3  # 5 = 101, 3 = 011 (이진수)

print("a & b  =", a & b)  # 비트 AND (결과: 1)
print("a | b  =", a | b)  # 비트 OR (결과: 7)
print("a ^ b  =", a ^ b)  # 비트 XOR (결과: 6)
print("~a     =", ~a)     # 비트 NOT (결과: -6)
print("a << 1 =", a << 1) # 왼쪽 시프트 (결과: 10)
print("a >> 1 =", a >> 1) # 오른쪽 시프트 (결과: 2)

Python도 C, Java와 동일한 비트 연산 가능

 

실행 결과 비교

연산자 C 결과 Java 결과 Python 결과
a & b (AND) 1 1 1
`a b` (OR) 7 7
a ^ b (XOR) 6 6 6
~a (NOT) -6 -6 -6
a << 1 (왼쪽 시프트) 10 10 10
a >> 1 (오른쪽 시프트) 2 2 2
  • C, Java, Python에서 비트 연산자는 동일하게 동작
  • 비트 NOT(~) 연산자는 2의 보수를 사용하여 결과가 다르게 보일 수 있음

비트 연산자는 이진수 단위로 연산을 수행
C, Java, Python에서 동일한 비트 연산자 사용 가능
~ 연산자(비트 NOT)는 2의 보수 개념 때문에 결과가 다르게 보일 수 있음
비트 연산은 빠른 계산과 특정 비트 조작에 유용함


논리 연산자(Logical Operators)

논리 연산자는 참(true)과 거짓(false)을 판단하는 연산자로,
주로 조건문(if, while)에서 여러 개의 조건을 연결할 때 사용됩니다.

 

C, Java, Python 논리 연산자 비교표 

연산자 설명 C예제 Java예제 Python예제
&&/  and 논리 AND (두 조건이 모두 참이면 참) a && b a && b a and b
||/ or 논리 OR (둘 중 하나라도 참이면 참) a || b a || b a or b
!/ not 논리 NOT (참이면 거짓, 거짓이면 참) !a !a not a
  • C와 Java에서는 &&, ||, ! 사용
  • Python에서는 and, or, not 사용 (&&, ||, ! 사용 불가!)
  • C와 Java에서는 &&, ||, ! 사용
  • Python에서는 and, or, not 키워드 사용

논리연산자 예제

C언어 예제

#include <stdio.h>

int main() {
    int a = 1, b = 0;  // 1 = true, 0 = false

    printf("a && b  = %d\n", a && b);  // 논리 AND (결과: 0)
    printf("a || b  = %d\n", a || b);  // 논리 OR (결과: 1)
    printf("!a      = %d\n", !a);      // 논리 NOT (결과: 0)

    return 0;
}

Java 예제

public class Main {
    public static void main(String[] args) {
        boolean a = true, b = false;

        System.out.println("a && b  = " + (a && b));  // 논리 AND (결과: false)
        System.out.println("a || b  = " + (a || b));  // 논리 OR (결과: true)
        System.out.println("!a      = " + (!a));      // 논리 NOT (결과: false)
    }
}

Python 예제

a, b = True, False

print("a and b  =", a and b)  # 논리 AND (결과: False)
print("a or b   =", a or b)   # 논리 OR (결과: True)
print("not a    =", not a)    # 논리 NOT (결과: False)

 

Python은 && 대신 and, || 대신 or, ! 대신 not 사용

 

실행 결과 비교

연산자 C결과 Java 결과 Python 결과
a && b (and) 0 (false) false False
`a   b (or`) 1 (true)
!a (not a) 0 (false) false False

C는 1(true), 0(false), Java와 Python은 true, false 출력

논리연산자는 조건문에서 자주사용합니다. 예를 들어
C에서 논리 연산자 사용
#include <stdio.h>

int main() {
    int x = 5;

    if (x > 3 && x < 10) {
        printf("x는 3보다 크고 10보다 작다.\n");
    }

    return 0;
}

Java에서 논리 연산자 사용
public class Main {
    public static void main(String[] args) {
        int x = 5;

        if (x > 3 && x < 10) {
            System.out.println("x는 3보다 크고 10보다 작다.");
        }
    }
}

Python에서 논리 연산자 사용
x = 5

if x > 3 and x < 10:
    print("x는 3보다 크고 10보다 작다.")

 

조건문에서 &&, ||(and, or)을 사용하여 조건 연결 가능
Python에서는 and, or, not 키워드 사용

 

요약

  • C와 Java에서는 &&, ||, ! 사용, Python에서는 and, or, not 사용
  • C는 1(true), 0(false), Java와 Python은 true, false 출력
  • 조건문(if)에서 많이 사용됨
  • 논리 연산자를 사용하면 여러 개의 조건을 쉽게 연결 가능

대입 연산자(Assignment Operators)

대입 연산자는 변수에 값을 할당(저장)하는 연산자입니다.
일반적인 = 연산자 외에도 값을 더하거나, 빼거나, 곱하거나, 나누면서 할당하는 복합 대입 연산자가 있습니다.

 

C, Java, Python 대입 연산자 비교표

연산자 설명 C예제 Java 예제 Python 예제
= 변수에 값을 할당 a = 10; a = 10; a = 10
+= 덧셈 후 할당 (a = a + b) a += 5; a += 5; a += 5
-= 뺄셈 후 할당 (a = a - b) a -= 3; a -= 3; a -= 3
*= 곱셈 후 할당 (a = a * b) a *= 2; a *= 2; a *= 2
/= 나눗셈 후 할당 (a = a / b) a /= 2; a /= 2; a /= 2
%= 나머지 연산 후 할당 (a = a % b) a %= 3; a %= 3; a %= 3

C, Java, Python 모두 동일한 대입 연산자 사용 가능
Python도 = 외에 +=, -=, *=, /=, %= 모두 사용 가능

 

대입연산자 예제

C언어 예제

#include <stdio.h>

int main() {
    int a = 10;

    a += 5;  // a = a + 5
    printf("a += 5 : %d\n", a); // 15

    a -= 3;  // a = a - 3
    printf("a -= 3 : %d\n", a); // 12

    a *= 2;  // a = a * 2
    printf("a *= 2 : %d\n", a); // 24

    a /= 4;  // a = a / 4
    printf("a /= 4 : %d\n", a); // 6

    a %= 5;  // a = a % 5
    printf("a %%= 5 : %d\n", a); // 1

    return 0;
}

Java 예제

public class Main {
    public static void main(String[] args) {
        int a = 10;

        a += 5;
        System.out.println("a += 5 : " + a); // 15

        a -= 3;
        System.out.println("a -= 3 : " + a); // 12

        a *= 2;
        System.out.println("a *= 2 : " + a); // 24

        a /= 4;
        System.out.println("a /= 4 : " + a); // 6

        a %= 5;
        System.out.println("a %= 5 : " + a); // 1
    }
}

Python 예제

a = 10

a += 5
print("a += 5 :", a)  # 15

a -= 3
print("a -= 3 :", a)  # 12

a *= 2
print("a *= 2 :", a)  # 24

a /= 4
print("a /= 4 :", a)  # 6.0 (Python은 실수 나눗셈)

a %= 5
print("a %= 5 :", a)  # 1.0

Python에서는 /= 연산 결과가 실수(float)가 됨! (6.0으로 출력)
C와 Java는 정수 나눗셈이므로 6으로 출력됨

 

실행 결과 비교

연산자 C 결과(int) Java 결과(int) Python 결과(int/float)
a += 5 15 15 15
a -= 3 12 12 12
a *= 2 24 24 24
a /= 4 6 6 6.0 (float)
a %= 5 1 1 1.0 (float)

Python에서 /=와 %= 연산 결과가 float로 변환됨
C와 Java에서는 그대로 int 유지

 

요약

  • 대입 연산자는 변수에 값을 저장하는 연산자
  • =, +=, -=, *=, /=, %= 연산자는 C, Java, Python에서 동일하게 사용 가능
  • Python은 /= 연산 결과가 float(실수)로 변환됨! (6.0)
  • 복합 대입 연산자는 코드를 간결하게 만들어 줌

조건 연산자(삼항 연산자, Ternary Operator)

조건 연산자(삼항 연산자)는 조건에 따라 두 개의 값 중 하나를 선택하는 연산자입니다.
일반적으로 if-else 문을 간단하게 표현하는 데 사용됩니다.

 

C, Java, Python 조건 연산자 비교표

연산자 설명 C예제 Java 예제 Python 예제
? : 조건이 참이면 앞의 값, 거짓이면 뒤의 값 반환 x = (a > b) ? a : b; x = (a > b) ? a : b; x = a if a > b else b

C와 Java에서는 ? : 사용
Python에서는 if-else 표현식 사용 (? : 없음)

 

조건연산자(삼항 연산자) 예제

C언어 예제

#include <stdio.h>

int main() {
    int a = 10, b = 20;
    
    // 삼항 연산자 사용
    int max = (a > b) ? a : b;

    printf("더 큰 값: %d\n", max);  // 출력: 20

    return 0;
}

Java 예제

public class Main {
    public static void main(String[] args) {
        int a = 10, b = 20;

        // 삼항 연산자 사용
        int max = (a > b) ? a : b;

        System.out.println("더 큰 값: " + max);  // 출력: 20
    }
}

Python 예제(? : 대신 if-else 사용)
a, b = 10, 20

# 삼항 연산자 대신 if-else 표현식 사용
max_value = a if a > b else b

print("더 큰 값:", max_value)  # 출력: 20

 

실행 결과 비교

연산자 C 결과(int) Java결과(int) Python결과(int)
(a > b) ? a : b 20 20 20

C와 Java는 ? : 사용, Python은 if-else 표현식 사용

 

요약

  • 조건 연산자(삼항 연산자)는 if-else를 간결하게 표현하는 연산자
  • C와 Java에서는 ? : 사용, Python에서는 if-else 표현식 사용
  • 조건이 참이면 앞의 값, 거짓이면 뒤의 값을 반환

기타 연산자(Miscellaneous Operators)

기타 연산자는 특정한 기능을 수행하는 연산자들로,
C, Java, Python에서 공통적으로 사용되거나 각 언어에서만 존재하는 연산자들이 포함됩니다.

 

C, Java, Python 기타 연산자 비교표

연산자 설명 C예제 Java 예제 Python 예제
sizeof 데이터 크기(바이트) 반환 sizeof(int) - sys.getsizeof(a)
typeof 변수 또는 데이터 타입 확인 - var instanceof Type type(a)
. 객체 멤버 접근 obj.member obj.member obj.member
-> 포인터 구조체 멤버 접근 ptr->member - -
& 주소 연산자(메모리 주소 반환) &a - id(a)
* 포인터 연산(주소값 참조) *ptr - -
, 여러 표현식 연산 a = (x, y, z); a = (x, y, z); a, b = x, y
instanceof 객체가 특정 클래스의 인스턴스인지 확인 - obj instanceof Class isinstance(obj, Class)

C는 sizeof, ->, *, & 등의 포인터 연산 존재
Java는 instanceof 연산자가 있음
Python은 type(), isinstance(), sys.getsizeof() 등 사용


연산자 우선순위(Operator Precedence)

연산자 우선순위란 여러 개의 연산자가 함께 사용될 때 어떤 연산이 먼저 수행되는지를 결정하는 규칙입니다.
연산자 우선순위가 높을수록 먼저 계산되며, 같은 우선순위일 경우 연산 방향(결합순서, Associativity)에 따라 연산이 수행됩니다.

 

C, Java, Python 연산자 우선순위 비교표

우선순위 연산자 설명 결합방향
1 (높음) () 괄호 연산 (가장 먼저 실행) 좌 → 우
2 ++, -- 증감 연산자 (전위/후위) 좌 → 우
3 +, - (단항) 
! / not
~ (비트 NOT)
부호 연산자 / 논리 NOT / 비트 NOT 우 → 좌
4 *, /, % 곱셈, 나눗셈, 나머지 연산 좌 → 우
5 +, - (이항) 덧셈, 뺄셈 좌 → 우
6 <<, >> 비트 이동 연산자 좌 → 우
7 <, <=, >, >= 관계 연산자 (비교 연산자) 좌 → 우
8 ==, != 등가 연산자 (같음/다름 비교) 좌 → 우
9 & 비트 AND 좌 → 우
10 ^ 비트 XOR 좌 → 우
11 ` ` 비트 OR
12 && / and 논리 AND 좌 → 우
13 <code>||</code> / or 논리 OR 좌 → 우
14 ?: / if-else 조건(삼항) 연산자 우 → 좌
15 =, +=, -=, *=, /=, %= 대입 연산자 (할당 연산자) 우 → 좌
16 (낮음) , 쉼표 연산자 (여러 표현식 사용) 좌 → 우

C, Java, Python의 연산자 우선순위는 대부분 동일
Python에서는 ?: 연산자가 없고, if-else 표현식을 사용

 

연산자 우선순위 주요 정리

  • 괄호 () 가 가장 높은 우선순위를 가짐
  • 증감 연산자 ++, -- 가 우선 적용됨
  • 곱셈(*), 나눗셈(/), 나머지(%)가 덧셈(+), 뺄셈(-)보다 먼저 계산됨
  • 논리 연산자 &&, || (and, or)는 비교 연산자 <, <=, ==보다 우선순위가 낮음
  • 대입 연산자 =, +=, -=, *=, /=, %= 는 가장 낮은 우선순위 중 하나

연산자 결합 방향 (Associativity)

  • 좌 → 우: *, /, %, +, -, &, |, ^, ==, !=, &&, ||
  • 우 → 좌: =, +=, -=, *=, /=, %=, ?:, not

핵심 요약

  • 괄호 ()가 가장 먼저 계산됨!
  • 곱셈 *, 나눗셈 /이 덧셈 +, 뺄셈 -보다 먼저!
  • 비교 연산(>, <, ==, !=)이 논리 연산(&&, ||, and, or)보다 먼저!
  • 할당(=)은 가장 마지막에 실행됨!
  • 괄호 ()를 사용하면 우선순위를 명확하게 조절 가능

연산자 우선 순위 예제

1.괄호 우선 순위

C

int result = (5 + 2) * 3;  // 괄호가 가장 먼저 계산됨

Java

int result = (5 + 2) * 3;

Python

result = (5 + 2) * 3

출력 결과
21 (5 + 2 먼저 계산 후 * 3)

2. 곱셈(*), 나눗셈(/), 나머지(%)가 덧셈(+), 뺄셈(-)보다 우선

C

int result = 10 - 4 * 2;  // `4 * 2`가 먼저 계산됨

Java

int result = 10 - 4 * 2;

Python

result = 10 - 4 * 2

출력 결과
2 (4 * 2 먼저 계산 후 10 - 8)

3. 논리 연산자가 비교 연산자보다 낮은 우선순위

C

if (5 > 3 && 10 < 20)  // 비교(`>`, `<`) 먼저 실행 → `true && true` = true

Java

if (5 > 3 && 10 < 20)

Python
if 5 > 3 and 10 < 20:

출력 결과 
조건만족(true)

4.할당 연산자 =의 낮은 우선순위

C

int x = 5;
int y = 10;
int result = x + y / 2;  // `y / 2` 먼저 계산됨 → (5 + 5) = 10

Java

int x = 5, y = 10;
int result = x + y / 2;

Python

x, y = 5, 10
result = x + y // 2

출력결과 
10

출저 및 참고

정보처리 산업기사 기본서(시나공)

728x90

'자격증 > 정보처리' 카테고리의 다른 글

제어문  (0) 2025.02.12
데이터 입·출력  (0) 2025.02.10
변수  (0) 2025.02.09
데이터 타입  (0) 2025.02.09
네트워크 관련 신기술  (0) 2025.02.08