Dart는 아래 표에 기재된 모든 연산자를 지원하며, 표는 우선순위 높은 순서부터 낮은 순서로 정렬되어 있습니다
| 분류 설명 | 연산자 | 결합성 |
|---|---|---|
| 단항 후위 연산자 | expr++ expr-- () [] ?[] . ?. ! | 없음 |
| 단항 전위 연산자 | - expr ! expr ~ expr ++ expr -- expr await expr | 없음 |
| 곱셈 나눗셈 연산 | * / % ~/ | 왼쪽 결합 |
| 덧셈 뺄셈 연산 | + - | 왼쪽 결합 |
| 비트 이동 연산 | << >> >>> | 왼쪽 결합 |
| 비트 AND | & | 왼쪽 결합 |
| 비트 XOR | ^ | 왼쪽 결합 |
| 비트 OR | | | 왼쪽 결합 |
| 관계 및 타입 검사 | >= > <= < as is is! | 없음 |
| 동등 비교 | == != | 없음 |
| 논리 AND | && | 왼쪽 결합 |
| 논리 OR | || | 왼쪽 결합 |
| 널 병합 연산자 | ?? | 왼쪽 결합 |
| 삼항 조건 연산자 | expr1 ? expr2 : expr3 | 오른쪽 결합 |
| 캐스케이드 연산자 | .. ?.. | 왼쪽 결합 |
| 할당 연산자 | = *= /= += -= &= ^= 등 | 오른쪽 결합 |
| 전개 연산자 (비고 참고) | ... ...? | 없음 |
위 연산자를 피연산자와 함께 사용하면 연산 표현식을 구성할 수 있습니다
예시:
a++
a + b
a = b
a == b
c ? a : b
a is T
아래는 정식 실행 예제 코드입니다
void main() {
// 1. 후위 증가식 a++
int a = 10;
print("1. 후위 증가 a++");
print("증가 전 a = $a");
int temp = a++; // 먼저 값을 가져온 뒤 증가
print("temp (가져온 값) = $temp");
print("증가 후 a = $a\n");
// 2. 덧셈 표현식 a + b
int b = 20;
int sum = a + b;
print("2. 덧셈 a + b");
print("$a + $b = $sum\n");
// 3. 할당 표현식 a = b
a = b;
print("3. 할당 a = b");
print("할당 후 a = $a\n");
// 4. 동등 비교 표현식 a == b
bool isEqual = a == b;
print("4. 동등 비교 a == b");
print("a == b 결과:$isEqual\n");
// 5. 삼항 조건 표현식 c ? a : b
int c = 5;
String result = c > 0 ? "c는 양수" : "c는 음수 또는 0";
print("5. 삼항 연산자 c ? a : b");
print("c>0 판단 결과:$result\n");
// 6. 타입 검사 표현식 a is T
dynamic testVal = 100;
print("6. 타입 검사 a is T");
print("testVal is int:${testVal is int}");
print("testVal is String:${testVal is String}");
}
Code language: Dart (dart)
위 코드를 복사한 뒤 dart run 명령으로 실행해보세요
연산자 우선순위 핵심 규칙
1. 우선순위 정렬 논리
연산자 표는 위에서 아래로 갈수록 우선순위가 낮아집니다:표 윗줄 연산자가 아래 모든 줄보다 우선순위가 높아 먼저 실행됩니다.
예시:아래 > 기호는 크기 비교가 아닌 “우선순위가 높다” 의미입니다.
실행 순서:나머지 % > 동등 비교 == > 논리 AND &&
n % i == 0 && d % i == 0 연산 실행 분해:
- 먼저
n % i、d % i실행 (%우선순위 가장 높음) - 그 다음 두 개의
==동등 비교 실행 - 마지막 중간
&&논리 AND 실행

2 괄호의 역할
괄호 ((n % i == 0) && (d % i == 0)):코드 가독성만 높일 뿐 원래 연산 순서는 바뀌지 않음;
괄호 없는 버전 n % i == 0 && d % i == 0:기본 우선순위에 따라 자동 연산되며 두 코드 로직과 실행 결과가 완전히 동일함;
추가 설명:기본 우선순위를 깨뜨려야 할 때만 괄호가 실행 순서를 변경합니다.
void main() {
int n = 10;
int d = 20;
int i = 2;
// 작성법1:괄호 포함, 가독성 좋음
if ((n % i == 0) && (d % i == 0)) {
print("작성법1:나누어 떨어짐");
}
// 작성법2:괄호 없음, 우선순위 기반 연산 결과 완전 일치
if (n % i == 0 && d % i == 0) {
print("작성법2:나누어 떨어짐");
}
}
실행 결과
작성법1:나누어 떨어짐
작성법2:나누어 떨어짐
Previous: Dart 변수
Next: Dart 산술 연산자