728x90
반응형
01. 수식의 개요
✅ 수식(expression)
- 값(정수, 실수, 문자, 문자열 등)을 나타내는 표현
- 연산자(연산을 수행하는 함수 포함)와 피연산자로 구성되어 하나의 값을 나타내는 표현
- 예) 2, -5.3, "abc", i+3 ...
- 수식은 연산자와 피연산자로 구성 되지만 피연산자와 연산자가 모두 포함될 필요는 없음!
class Main{
public static void main(String[] args){
int i = 1;
System.out.println(i+3); //예1) 연산자와 피연산자로 구성
System.out.println(f()); //예2) 피연산자 없이 수식 구성
System.out.println(-5.3); //예3) 연산자 없이 수식 구성
}
public static int f(){
return 100;
}
}
02. 수식과 문장의 차이
- 수식: 값을 나타내는 표현
- 문장: 처리를 나타내는 표현
- 처리: 값 계산, 수행 흐름 바꾸기, 값을 화면에 출력 등
예) Python
#수식이면서 문장
3+2
#문장(어떤 하나의 값을 표현하지 않기 때문에 수식은 아님)
if k > 1:
k = 1
예) C, C++
- 수식의 끝에 세미콜론(;)을 찍으면 문장이 됨
- 문장의 끝에 세미콜론이 없다고 해서 항상 수식이 되는 건 아님
03. 수식과 연산자
▪️ 수식에 사용되는 기본 연산자
- 산술 연산자
- 관계 연산자
- 논리 연산자
- 그 외 연산자
✅ 산술 연산자
default | 기본적인 사칙연산 외에 추가되는 산술 연산자는 언어마다 다름 |
![]() |
![]() |
- 기본적으로 사칙연산자 포함
- 언어에 따라 추가적인 산술 연산자 포함
- 예) 나머지, 거듭제곱 등
🔸피연산자 개수
- 단항 연산자: 1개의 피연산자 필요
- 이항 연산자: 2개의 피연산자 필요
🔸우선순위
- 하나의 수식에 여러 연산자가 사용되는 경우, 우선순위에 따라 연산 수행
🔸타입 변환
- 주어진 타입의 값을 다른 타입의 값으로 변환
- 피연산자들의 타입이 서로 일치하지 않는 경우 필요
- 종류: 묵시적 타입 변환, 명시적 타입 변환
▪️ 묵시적 타입 변환
- 언어의 정책에 따라 컴파일러에 의해 자동으로 변환
- 데이터 집합이 커지는 방향의 타입으로 확대변환
▪️ 명시적 타입 변환
- 프로그래머가 명시한 타입으로 변환
- 확대변환 및 축소변환 모두 가능
✅관계 연산자
- 2개의 피연산자를 서로 비교하여 둘 사이의 관계가 관계 연산자와 일치하는지 여부를 확인
- 결과 값: 참(true), 거짓(false)
🔸우선 순위
- 산술 연산자보다 우선순위가 낮음
🔸타입 변환
- 묵시적 타입 변환이나 명시적 타입 변환 가능
✅ 논리 연산자
- 논리곱, 논리합, 부정 등
- 피연산자 및 결과 값: 참(true), 거짓(false)
🔸우선 순위
🔸단락 평가(short-circuit evaluation)
- 모든 논리 연산을 수행하지 않고도 수식의 값을 얻음
✅ 그 외 연산자
- 비트 단위 논리 연산자: &, ^, |, ~
- 조건 연산자: 조건 ? 참인 경우 : 거짓인 경우
728x90
반응형
'KNOU > 프로그래밍언어론' 카테고리의 다른 글
[프로그래밍언어론] 12. 문장 (0) | 2022.11.24 |
---|---|
[프로그래밍언어론] 10. 복합타입 (0) | 2022.11.15 |
[프로그래밍언어론] 9. 타입 (0) | 2022.11.01 |
[프로그래밍언어론] 8. 변수의 영역 (0) | 2022.10.10 |
[프로그래밍 언어론] 7. 변수와 바인딩 (0) | 2022.09.28 |