Dart 연산자

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 연산 실행 분해:

  1. 먼저 n % id % i 실행 (% 우선순위 가장 높음)
  2. 그 다음 두 개의 == 동등 비교 실행
  3. 마지막 중간 && 논리 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:나누어 떨어짐

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다