공부해보잠
연산자 본문
산술 연산자
산술 연산자는 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 연산 등을 수행하는 연산자입니다.
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
출저 및 참고
정보처리 산업기사 기본서(시나공)