Dart 대입 연산자

1、기본 대입 연산자 =

오른쪽 표현식의 값을 왼쪽 변수에 저장하며 기존 값을 덮어씁니다.

사용법:

변수 = 값 또는 표현식;
int age;
age = 10;        // 10을 age에 대입
String name;
name= "sam"; // 문자열 대입Code language: JavaScript (javascript)

2、null 인지 대입 연산자 ??=

왼쪽 변수의 값이 null일 때만 대입을 실행합니다. 변수가 null이 아니라면 원래 값을 유지합니다.

사용법:

변수 ??= 값;

다음 코드와 동일한 기능:

if (변수 == null) {
  변수 = 값;
}Code language: JavaScript (javascript)

예시:

void main() {
	int? total = null;
	total ??= 5;
	print(total); // 5 출력, total이 null이므로 대입 적용

	int? count = 100;
	count ??= 200;
	print(count); // 100 출력, count가 null이 아니므로 대입 무시
}Code language: PHP (php)

3、복합 대입 연산자

연산과 대입을 한 번에 처리하는 연산자

임의의 연산자 op에 대해

a op= ba = a op b 와 똑같은 의미입니다

분류연산자의미
기본 사칙연산+=덧셈 후 대입
-=뺄셈 후 대입
*=곱셈 후 대입
/=부동소수점 나눗셈 후 대입
정수 나눗셈~/=정수 나눗셈 후 대입 (정수 몫 반환)
나머지 연산%=나머지 계산 후 대입
비트 좌측 시프트<<=좌측 시프트 후 대입
비트 우측 시프트>>=우측 시프트 후 대입
부호 없는 우측 시프트>>>=부호 없는 우측 시프트 후 대입
비트 AND&=비트 AND 연산 후 대입
비트 XOR^=비트 XOR 연산 후 대입
비트 OR|=비트 OR 연산 후 대입
연산자 동작 방식:op= ba = a op b
예시:a += ba = a + b

실행 예시:

void main() {
	var num = 2;

	// *= 곱셈 복합 대입
	num *= 3; 
	print(num); // 6, num = num * 3 과 동일

	// += 덧셈
	num += 4;
	print(num); // 10, num = num + 4 와 동일

	// -= 뺄셈
	num -= 2;
	print(num); // 8

	// /= 부동소수점 나눗셈
	double d = 10;
	d /= 2;
	print(d); // 5.0

	// ~/= 정수 나눗셈
	int n = 7;
	n ~/= 2;
	print(n); // 3

	// %= 나머지 연산
	int m = 9;
	m %= 2;
	print(m); // 1

	// <<= 좌측 시프트
	int bit1 = 1;
	bit1 <<= 2; // 1 << 2 = 4
	print(bit1); // 4

	// >>= 우측 시프트
	int bit2 = 8;
	bit2 >>= 2; // 8 >> 2 = 2
	print(bit2); // 2

	// >>>= 부호 없는 우측 시프트
	int bit3 = -8;
	bit3 >>>= 2;
	print(bit3); //4611686018427387902 매우 큰 수 

	// &= 비트 AND
	int x = 6; // 110
	x &= 3;    // 011
	print(x);  // 010 = 2

	// ^= XOR 연산
	int y = 5;
	y ^= 3;
	print(y);

	// |= 비트 OR
	int z = 4;
	z |= 1;
	print(z); // 5
}Code language: PHP (php)

시프트 연산 설명: int bit1 = 1; 을 왼쪽으로 2비트 이동할 경우,

10진수 1 의 32비트 이진 표현:

00000000 00000000 00000000 00000001

x << n:x의모든 이진 비트를 통째로 왼쪽으로 n비트 이동시키고, 오른쪽 빈 하위 비트에는 0 을 채우며 왼쪽에서 넘친 상위 비트는 버립니다.

위 예시는 다음과 같이 변환됩니다:

00000000 00000000 00000000 00000100

이 이진수는 십진수 4에 해당합니다

논리 연산자는 뒤에서 다루겠습니다. 지금은 대입 연산자만 숙지해도 괜찮으며, 이 부분이 이번 수업의 핵심 내용입니다.

void main() {
  // 1. 기본 대입 =
  var a = 2;
  print(a == 2);

  // 2. 곱셈 복합 대입 *=
  a *= 3; // a =  a * 3;
  print(a == 6);

  // 3. 덧셈 복합 대입 +=
  a += 4; // a = a + 4;
  print(a == 10);

  // 4. null 인지 대입 ??=
  int? b; // 기본값 null
  b ??= 20;
  print(b == 20);

  b ??= 99; // b가 null이 아니므로 수정되지 않음
  print(b == 20);

  // 5. 뺄셈 -=
  a -= 5;
  print(a == 5);

  // 6. 나머지 연산 %=
  a %= 3;
  print(a == 2);
}Code language: Dart (dart)

위 코드 모든 출력 결과는 true입니다

답글 남기기

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