Java의 연산자에 대해 배웁니다. Java에는 다양한 연산자가 있으나 현재 모든 연산자를 알 필요가 없습니다. 기본적인 연산자 몇 개만 알고 있어도 큰 문제가 없습니다.
ㅤ
앞으로 자주 사용할 연산자만 알아도 코딩을 하는데 큰 문제가 없습니다
ㅤ
더하기 연산자는 연산자 기준 좌측 값과 우측 값을 더하고 그 결과를 반환하는 연산자입니다
ㅤ
빼기 연산자는 연산자 기준 좌측 값에서 우측 값을 뺀 결과를 반환하는 연산자입니다
ㅤ
곱하기 연산자는 연산자 기준 좌측 값과 우측 값을 곱한 결과를 반환하는 연산자입니다
ㅤ
나누기 연산자는 연산자 기준 좌측 값에서 우측 값을 나눈 결과를 반환하는 연산자입니다
ㅤ
나머지 연산자는 연산자 기준 좌측 값에서 우측 값을 나눴을 때 나오는 나머지를 반환하는 연산자입니다
ㅤ
++ 연산자는 조금 특별한 연산자입니다. 기존의 변수에 저장된 값을 1 증가시키는 연산자인데요. 다만 연산자의 위치에 따라 반환 값이 달라 지는 부분이 있습니다.
해당 변수에 값을 먼저 읽는다
값을 1을 더한다
연산된 결과 값을 변수에 저장한다
변수에 저장된 값을 반환한다
예시코드
int num = 100;
System.out.println(++num);
출력
101
ㅤ
후행 ++ 연산자는 먼저 변수에 저장된 값을 반환하고 변수에 값을 1증가 시키는 연산자입니다
변수에 저장된 값을 반환한다
해당 변수에 값을 먼저 읽는다
값을 1을 더한다
연산된 결과 값을 변수에 저장한다
예시코드
int num = 100;
System.out.println(num++);
System.out.println(num);
출력
100
101
ㅤ
-- 연산자도 ++ 연산자와 연산의 순서는 동일하나 기존의 변수에 저장된 값을 1 차감시키는 연산자입니다
해당 변수에 값을 먼저 읽는다
값을 1을 감한다
연산된 결과 값을 변수에 저장한다
변수에 저장된 값을 반환한다
예시코드
int num = 100;
System.out.println(--num);
출력
99
ㅤ
후행 -- 연산자는 먼저 변수에 저장된 값을 반환하고 변수에 값을 1 차감시키는 연산자입니다.
변수에 저장된 값을 반환한다
해당 변수에 값을 먼저 읽는다
값을 1을 감한다
연산된 결과 값을 변수에 저장한다
예시코드
int num = 100;
System.out.println(num--);
System.out.println(num);
출력
100
99
ㅤ
‘<‘ 연산자는 연산자 기준 좌측 값과 우측 값을 비교했을 때 우측 값이 크면 true 그렇지 않으면 false를 반환하는 연산자입니다.
ㅤ
‘<=‘ 연산자는 연산자 기준 좌측 값과 우측 값을 비교 했을 때 우측 값이 좌측 값보다 크거나 같으면 true, 그렇지 않으면 false를 반환하는 연산자입니다.
ㅤ
‘>’ 연산자는 연산자 기준 좌측 값과 우측 값을 비교했을 때 우측 값이 크면 true, 그렇지 않으면 false를 반환하는 연산자입니다.
ㅤ
‘>=‘ 연산자는 연산자 기준 좌측 값과 우측 값을 비교 했을 때 좌측 값이 우측 값보다 크거나 같으면 true, 그렇지 않으면 false를 반환하는 연산자입니다.
ㅤ
동등 비교 연산자는 연산자 기준 좌측 값과 우측 값을 비교했을 때 좌측 값과 우측 값이 같으면 true, 그렇지 않으면 false를 반환하는 연산자입니다.
ㅤ
다음 연산자는 연산자 기준 좌측 값과 우측 값을 비교 했을 때 좌측 값과 우측 값이 같지 않으면 true, 같으면 false를 반환하는 연산자입니다.
ㅤ
논리 연산자중 부정 연산자는 참과 거짓을 부정한다라는 의미를 가지고 있는데요.
true이면 false로 false이면 true 바꿔주는 연산자라고 생각하시면 쉽습니다
괄호 안의 식은 true라는 값을 반환합니다.
다만 부정연산자를 사용 하면 true의 값을 부정하기 때문에 false가 됩니다
이러한 부정연산자는 true 또는 false의 값이나 true 또는 false를 반환하는 식에서만 사용할 수 있습니다.
ㅤ
And 연산자는 연산자 기준 좌측 값이나 우측 값이 둘 다 true이면 true를 반환하고 둘 중 하나라도 false이면 false를 반환하는 연산자입니다.
쉽게 말해 이것도 참이고 저것도 참이면 참이다 둘 중 하나라도 거짓이면 거짓이다 라고 생각하시면 됩니다.
#### '||' 연산자
Or 연산자는 연산자 기준 좌측 값 또는 우측 값이 둘 중 하나라도 true이면 true 모두 false이면 false를 반환하는 연산자입니다.
쉽게 말해 둘 중 하나라도 참이면 참이다 둘 다 거짓일 경우에만 거짓이다 라고 생각하시면 됩니다.
ㅤ
오차로 인해 실수형 변수끼리의 비교는 원치 않는 결과를 발생시킬 수 있습니다.
아래와 같은 코드가 있다고 가정합시다.
float x = 1.33F;
x = x + 0.1F;
boolean isEqual = (1.43F == x);
isEqual에 저장된 변수의 값은 false입니다. 그 이유는
1.33 실수 리터럴이 x의 변수에 저장되면서 오차가 발생합니다.
실수 0.1을 더할 때 정확한 1.33이 아닌 값과 더합니다
실제로 x 변수에 저장된 값을 출력해보면 1.43이 아닌 약 1.430001이 되므로 1.43F와 x 변수에 저장된 값은 다릅니다. 그러므로 실수형 끼리의 비교는 부정확합니다.
우연찮게 동일한 경우도 있습니다. 그러나 그 수가 무엇인지는 알 수가 없기에 실수끼리의 비교 연산자를 통한 비교 연산은 조심해야 합니다.
그럼 어떻게 해야 할까요? 방법은 있습니다만 관련 내용은 후반 강의에서 진행합니다.
BigDecimal x = new BigDecimal("1.33");
x = x.add(new BigDecimal(“0.1"));
boolean isEqual = 0 == new BigDecimal("1.43").compareTo(x);
ㅤ
정수형과 실수형도 비교는 가능합니다만 가급적 비교를 하지 않는 것을 권장합니다.
일단 세 가지 예시가 있습니다.
case1
float a = 0.7f;
a += 0.30000007f;
boolean isEqual = a > 1; // false
case2
float a = 0.7f;
a += 0.30000009f;
boolean isEqual = a > 1; // true
case3
float a = 0.7f;
a += 0.3000007f;
boolean isEqual = a > 1; // true
일단 1 정수형 리터럴은 비교 연산자를 통해 실수형 리터럴로 암시적 형 변환이 발생합니다. 그리고 실수끼리 비교합니다.
세 가지 코드는 굉장히 유사하나 소수점이 몇째 자리냐의 차이가 있습니다. 이 부분은 “정수와 상수” 에서 설명했던 정밀도와 관련이 있습니다.
case1과 case2를 비교했을 때 소수 8번째 자릿수의 값이 2 정도 차이가 납니다. 이 결과에 따라 true
와 false
가 나뉩니다.
case1과 case3을 비교했을 때 case1은 소수 8번째 자리가 7이고 case3은 소수 7번째 자리가 7입니다. 이 결과에 따라 true
와 false
가 나뉩니다.
왜 이런 결과가 나올까요?
저장 시 오차
정밀도의 문제 (+ 반올림)
이런 복합적인 문제로 인해 우리가 정확히 원하는 결과를 얻을 수 없습니다. 정수와 실수가 큰 차이가 나는 값이 아닌 경우는 가급적 비교를 하지 않는 것을 권장합니다.
ㅤ
좌측값 | 우측값 | AND(&&) | OR(||) | XOR(^) |
---|---|---|---|---|
true | true | true | true | false |
true | false | false | true | true |
false | true | false | true | true |
false | false | false | false | false |
연산자 기준 좌측값과 우측값이 true 또는 false인 경우 AND, OR, XOR 연산자가 반환하는 값입니다.
ㅤ
모든 연산자를 알 필요는 없습니다. 알면 좋으나 강의에서 나온 연산자만 알아도 코딩하는데 큰 문제는 없습니다.
연산자 | 연산자에 대한 설명 | 예시 | 우선 순위 | 결합 방향 |
---|---|---|---|---|
() | 연산자 우선순위 결정 | 4 * (1 + 2) | 1 | 좌->우 |
[] | 배열 접근 인덱스 연산자 | array[index] | 1 | 좌->우 |
. | 프로퍼티 접근 연산자 | Object.property | 1 | 좌->우 |
++(변수) | 전위 증가 연산자 (변수의 값을 1 증가 후 읽기) | ++num | 2 | 우->좌 |
--(변수) | 전위 감소 연산자 (변수의 값을 1 증가 후 읽기) | --num | 2 | 우->좌 |
(변수)++ | 후위 증가 연산자 (변수의 값을 읽고 1 증가) | num++ | 3 | 우->좌 |
(변수)-- | 후위 감소 연산자 (변수의 값을 읽고 1 감소) | num-- | 3 | 우->좌 |
+ | + 부호 | +3 | 3 | 우->좌 |
- | - 부호 | -3 | 3 | 우->좌 |
! | 기존의 논리 값을 부정 | !true | 3 | 우->좌 |
~ | 비트 연산자(NOT, 반전) | ~1 | 3 | 우->좌 |
(type) | 형 변환 연산자 | (int)32.3f | 3 | 우->좌 |
* | 곱셈 연산자 | 4 * 2 | 4 | 좌->우 |
/ | 나누기 연산자 | 10 / 2 | 4 | 좌->우 |
% | 나머지 연산자(mod) | 9 % 2 | 4 | 좌->우 |
+ | 더하기 연산자 | 1 + 2 | 5 | 좌->우 |
- | 빼기 연산자 | 2 - 1 | 5 | 좌->우 |
<< | 비트 시프트 연산자 (우로 비트 이동) | 1 << 2 | 6 | 좌->우 |
>> | 비트 시프트 연산자 (좌로 비트 이동) | 4 >> 1 | 6 | 좌->우 |
>>> | 비트 시프트 제로 연산자 (우로 비트 이동, 0으로 채움) | 1 >>> 1 | 6 | 좌->우 |
< | 비교 연산자 (~보다 작다) | 1 < 3 | 7 | 좌->우 |
<= | 비교 연산자 (~보다 작거나 같다) | 1 < 3 | 7 | 좌->우 |
> | 비교 연산자 (~보다 크다) | 10 > 2 | 7 | 좌->우 |
>= | 비교 연산자 (~보다 크거나 같다) | 4>= 3 | 7 | 좌->우 |
instanceof | 클래스 타입 비교 연산자 | obj instanceof Obj.class | 7 | 좌->우 |
== | 비교 연산자(같다) | 4 == 4 or obj1 == obj2 | 8 | 좌->우 |
!= | 비교 연산자(같지 않다) | 1 != 2 | 8 | 좌->우 |
& | 비트 연산자(AND) | 2 & 1 | 9 | 좌->우 |
^ | 비트 연산자(XOR) | 2 ^ 1 | 10 | 좌->우 |
| | 비트 연산자(OR) | 2 | 1 | 11 | 좌->우 |
&& | 논리 연산자(AND) | true && true | 12 | 좌->우 |
|| | 논리 연산자(OR) | true || false | 13 | 좌->우 |
?: | 삼항 연산자 | int value = (num >= 3) ? 4 : 1 | 14 | 우->좌 |
= | 대입 연산자 (오른쪽의 값을 왼쪽으로 저장) | int num = 3; | 15 | 우->좌 |
+= | 대입 연산자 (왼쪽에 저장된 값과 오른쪽 값을 더하고 왼쪽에 저장) | num += 2; | 15 | 우->좌 |
-= | 대입 연산자 (왼쪽에 저장된 값과 오른쪽 값을 빼고 왼쪽에 저장) | num -= 2; | 15 | 우->좌 |
*= | 대입 연산자 (왼쪽에 저장된 값과 오른쪽 값을 곱하고 왼쪽에 저장) | num *= 2; | 15 | 우->좌 |
/= | 대입 연산자 (왼쪽에 저장된 값에서 오른쪽 값을 나누고 왼쪽에 저장) | num /= 2; | 15 | 우->좌 |
%= | 대입 연산자 (왼쪽의 값을 오른쪽 값으로 나누었을 때 나머지의 값을 왼쪽에 저장) | num %= 2; | 15 | 우->좌 |
'||' or 연산자 앞에 공백이 없어서 헤딩 마크다운 문법이 안먹힌것 같습니다.
비트연산자 AND 연산자 열에서 $가 아니고 &아닌가요!
헉..달러 표시라니.. 확인했습니다. 감사합니다^^
Java의 연산자에 대해 배웁니다. Java에는 다양한 연산자가 있으나 현재 모든 연산자를 알 필요가 없습니다. 기본적인 연산자 몇 개만 알고 있어도 큰 문제가 없습니다.
ㅤ
앞으로 자주 사용할 연산자만 알아도 코딩을 하는데 큰 문제가 없습니다
ㅤ
더하기 연산자는 연산자 기준 좌측 값과 우측 값을 더하고 그 결과를 반환하는 연산자입니다
ㅤ
빼기 연산자는 연산자 기준 좌측 값에서 우측 값을 뺀 결과를 반환하는 연산자입니다
ㅤ
곱하기 연산자는 연산자 기준 좌측 값과 우측 값을 곱한 결과를 반환하는 연산자입니다
ㅤ
나누기 연산자는 연산자 기준 좌측 값에서 우측 값을 나눈 결과를 반환하는 연산자입니다
ㅤ
나머지 연산자는 연산자 기준 좌측 값에서 우측 값을 나눴을 때 나오는 나머지를 반환하는 연산자입니다
ㅤ
++ 연산자는 조금 특별한 연산자입니다. 기존의 변수에 저장된 값을 1 증가시키는 연산자인데요. 다만 연산자의 위치에 따라 반환 값이 달라 지는 부분이 있습니다.
해당 변수에 값을 먼저 읽는다
값을 1을 더한다
연산된 결과 값을 변수에 저장한다
변수에 저장된 값을 반환한다
예시코드
int num = 100;
System.out.println(++num);
출력
101
ㅤ
후행 ++ 연산자는 먼저 변수에 저장된 값을 반환하고 변수에 값을 1증가 시키는 연산자입니다
변수에 저장된 값을 반환한다
해당 변수에 값을 먼저 읽는다
값을 1을 더한다
연산된 결과 값을 변수에 저장한다
예시코드
int num = 100;
System.out.println(num++);
System.out.println(num);
출력
100
101
ㅤ
-- 연산자도 ++ 연산자와 연산의 순서는 동일하나 기존의 변수에 저장된 값을 1 차감시키는 연산자입니다
해당 변수에 값을 먼저 읽는다
값을 1을 감한다
연산된 결과 값을 변수에 저장한다
변수에 저장된 값을 반환한다
예시코드
int num = 100;
System.out.println(--num);
출력
99
ㅤ
후행 -- 연산자는 먼저 변수에 저장된 값을 반환하고 변수에 값을 1 차감시키는 연산자입니다.
변수에 저장된 값을 반환한다
해당 변수에 값을 먼저 읽는다
값을 1을 감한다
연산된 결과 값을 변수에 저장한다
예시코드
int num = 100;
System.out.println(num--);
System.out.println(num);
출력
100
99
ㅤ
‘<‘ 연산자는 연산자 기준 좌측 값과 우측 값을 비교했을 때 우측 값이 크면 true 그렇지 않으면 false를 반환하는 연산자입니다.
ㅤ
‘<=‘ 연산자는 연산자 기준 좌측 값과 우측 값을 비교 했을 때 우측 값이 좌측 값보다 크거나 같으면 true, 그렇지 않으면 false를 반환하는 연산자입니다.
ㅤ
‘>’ 연산자는 연산자 기준 좌측 값과 우측 값을 비교했을 때 우측 값이 크면 true, 그렇지 않으면 false를 반환하는 연산자입니다.
ㅤ
‘>=‘ 연산자는 연산자 기준 좌측 값과 우측 값을 비교 했을 때 좌측 값이 우측 값보다 크거나 같으면 true, 그렇지 않으면 false를 반환하는 연산자입니다.
ㅤ
동등 비교 연산자는 연산자 기준 좌측 값과 우측 값을 비교했을 때 좌측 값과 우측 값이 같으면 true, 그렇지 않으면 false를 반환하는 연산자입니다.
ㅤ
다음 연산자는 연산자 기준 좌측 값과 우측 값을 비교 했을 때 좌측 값과 우측 값이 같지 않으면 true, 같으면 false를 반환하는 연산자입니다.
ㅤ
논리 연산자중 부정 연산자는 참과 거짓을 부정한다라는 의미를 가지고 있는데요.
true이면 false로 false이면 true 바꿔주는 연산자라고 생각하시면 쉽습니다
괄호 안의 식은 true라는 값을 반환합니다.
다만 부정연산자를 사용 하면 true의 값을 부정하기 때문에 false가 됩니다
이러한 부정연산자는 true 또는 false의 값이나 true 또는 false를 반환하는 식에서만 사용할 수 있습니다.
ㅤ
And 연산자는 연산자 기준 좌측 값이나 우측 값이 둘 다 true이면 true를 반환하고 둘 중 하나라도 false이면 false를 반환하는 연산자입니다.
쉽게 말해 이것도 참이고 저것도 참이면 참이다 둘 중 하나라도 거짓이면 거짓이다 라고 생각하시면 됩니다.
#### '||' 연산자
Or 연산자는 연산자 기준 좌측 값 또는 우측 값이 둘 중 하나라도 true이면 true 모두 false이면 false를 반환하는 연산자입니다.
쉽게 말해 둘 중 하나라도 참이면 참이다 둘 다 거짓일 경우에만 거짓이다 라고 생각하시면 됩니다.
ㅤ
오차로 인해 실수형 변수끼리의 비교는 원치 않는 결과를 발생시킬 수 있습니다.
아래와 같은 코드가 있다고 가정합시다.
float x = 1.33F;
x = x + 0.1F;
boolean isEqual = (1.43F == x);
isEqual에 저장된 변수의 값은 false입니다. 그 이유는
1.33 실수 리터럴이 x의 변수에 저장되면서 오차가 발생합니다.
실수 0.1을 더할 때 정확한 1.33이 아닌 값과 더합니다
실제로 x 변수에 저장된 값을 출력해보면 1.43이 아닌 약 1.430001이 되므로 1.43F와 x 변수에 저장된 값은 다릅니다. 그러므로 실수형 끼리의 비교는 부정확합니다.
우연찮게 동일한 경우도 있습니다. 그러나 그 수가 무엇인지는 알 수가 없기에 실수끼리의 비교 연산자를 통한 비교 연산은 조심해야 합니다.
그럼 어떻게 해야 할까요? 방법은 있습니다만 관련 내용은 후반 강의에서 진행합니다.
BigDecimal x = new BigDecimal("1.33");
x = x.add(new BigDecimal(“0.1"));
boolean isEqual = 0 == new BigDecimal("1.43").compareTo(x);
ㅤ
정수형과 실수형도 비교는 가능합니다만 가급적 비교를 하지 않는 것을 권장합니다.
일단 세 가지 예시가 있습니다.
case1
float a = 0.7f;
a += 0.30000007f;
boolean isEqual = a > 1; // false
case2
float a = 0.7f;
a += 0.30000009f;
boolean isEqual = a > 1; // true
case3
float a = 0.7f;
a += 0.3000007f;
boolean isEqual = a > 1; // true
일단 1 정수형 리터럴은 비교 연산자를 통해 실수형 리터럴로 암시적 형 변환이 발생합니다. 그리고 실수끼리 비교합니다.
세 가지 코드는 굉장히 유사하나 소수점이 몇째 자리냐의 차이가 있습니다. 이 부분은 “정수와 상수” 에서 설명했던 정밀도와 관련이 있습니다.
case1과 case2를 비교했을 때 소수 8번째 자릿수의 값이 2 정도 차이가 납니다. 이 결과에 따라 true
와 false
가 나뉩니다.
case1과 case3을 비교했을 때 case1은 소수 8번째 자리가 7이고 case3은 소수 7번째 자리가 7입니다. 이 결과에 따라 true
와 false
가 나뉩니다.
왜 이런 결과가 나올까요?
저장 시 오차
정밀도의 문제 (+ 반올림)
이런 복합적인 문제로 인해 우리가 정확히 원하는 결과를 얻을 수 없습니다. 정수와 실수가 큰 차이가 나는 값이 아닌 경우는 가급적 비교를 하지 않는 것을 권장합니다.
ㅤ
좌측값 | 우측값 | AND(&&) | OR(||) | XOR(^) |
---|---|---|---|---|
true | true | true | true | false |
true | false | false | true | true |
false | true | false | true | true |
false | false | false | false | false |
연산자 기준 좌측값과 우측값이 true 또는 false인 경우 AND, OR, XOR 연산자가 반환하는 값입니다.
ㅤ
모든 연산자를 알 필요는 없습니다. 알면 좋으나 강의에서 나온 연산자만 알아도 코딩하는데 큰 문제는 없습니다.
연산자 | 연산자에 대한 설명 | 예시 | 우선 순위 | 결합 방향 |
---|---|---|---|---|
() | 연산자 우선순위 결정 | 4 * (1 + 2) | 1 | 좌->우 |
[] | 배열 접근 인덱스 연산자 | array[index] | 1 | 좌->우 |
. | 프로퍼티 접근 연산자 | Object.property | 1 | 좌->우 |
++(변수) | 전위 증가 연산자 (변수의 값을 1 증가 후 읽기) | ++num | 2 | 우->좌 |
--(변수) | 전위 감소 연산자 (변수의 값을 1 증가 후 읽기) | --num | 2 | 우->좌 |
(변수)++ | 후위 증가 연산자 (변수의 값을 읽고 1 증가) | num++ | 3 | 우->좌 |
(변수)-- | 후위 감소 연산자 (변수의 값을 읽고 1 감소) | num-- | 3 | 우->좌 |
+ | + 부호 | +3 | 3 | 우->좌 |
- | - 부호 | -3 | 3 | 우->좌 |
! | 기존의 논리 값을 부정 | !true | 3 | 우->좌 |
~ | 비트 연산자(NOT, 반전) | ~1 | 3 | 우->좌 |
(type) | 형 변환 연산자 | (int)32.3f | 3 | 우->좌 |
* | 곱셈 연산자 | 4 * 2 | 4 | 좌->우 |
/ | 나누기 연산자 | 10 / 2 | 4 | 좌->우 |
% | 나머지 연산자(mod) | 9 % 2 | 4 | 좌->우 |
+ | 더하기 연산자 | 1 + 2 | 5 | 좌->우 |
- | 빼기 연산자 | 2 - 1 | 5 | 좌->우 |
<< | 비트 시프트 연산자 (우로 비트 이동) | 1 << 2 | 6 | 좌->우 |
>> | 비트 시프트 연산자 (좌로 비트 이동) | 4 >> 1 | 6 | 좌->우 |
>>> | 비트 시프트 제로 연산자 (우로 비트 이동, 0으로 채움) | 1 >>> 1 | 6 | 좌->우 |
< | 비교 연산자 (~보다 작다) | 1 < 3 | 7 | 좌->우 |
<= | 비교 연산자 (~보다 작거나 같다) | 1 < 3 | 7 | 좌->우 |
> | 비교 연산자 (~보다 크다) | 10 > 2 | 7 | 좌->우 |
>= | 비교 연산자 (~보다 크거나 같다) | 4>= 3 | 7 | 좌->우 |
instanceof | 클래스 타입 비교 연산자 | obj instanceof Obj.class | 7 | 좌->우 |
== | 비교 연산자(같다) | 4 == 4 or obj1 == obj2 | 8 | 좌->우 |
!= | 비교 연산자(같지 않다) | 1 != 2 | 8 | 좌->우 |
& | 비트 연산자(AND) | 2 & 1 | 9 | 좌->우 |
^ | 비트 연산자(XOR) | 2 ^ 1 | 10 | 좌->우 |
| | 비트 연산자(OR) | 2 | 1 | 11 | 좌->우 |
&& | 논리 연산자(AND) | true && true | 12 | 좌->우 |
|| | 논리 연산자(OR) | true || false | 13 | 좌->우 |
?: | 삼항 연산자 | int value = (num >= 3) ? 4 : 1 | 14 | 우->좌 |
= | 대입 연산자 (오른쪽의 값을 왼쪽으로 저장) | int num = 3; | 15 | 우->좌 |
+= | 대입 연산자 (왼쪽에 저장된 값과 오른쪽 값을 더하고 왼쪽에 저장) | num += 2; | 15 | 우->좌 |
-= | 대입 연산자 (왼쪽에 저장된 값과 오른쪽 값을 빼고 왼쪽에 저장) | num -= 2; | 15 | 우->좌 |
*= | 대입 연산자 (왼쪽에 저장된 값과 오른쪽 값을 곱하고 왼쪽에 저장) | num *= 2; | 15 | 우->좌 |
/= | 대입 연산자 (왼쪽에 저장된 값에서 오른쪽 값을 나누고 왼쪽에 저장) | num /= 2; | 15 | 우->좌 |
%= | 대입 연산자 (왼쪽의 값을 오른쪽 값으로 나누었을 때 나머지의 값을 왼쪽에 저장) | num %= 2; | 15 | 우->좌 |
'||' or 연산자 앞에 공백이 없어서 헤딩 마크다운 문법이 안먹힌것 같습니다.
비트연산자 AND 연산자 열에서 $가 아니고 &아닌가요!
헉..달러 표시라니.. 확인했습니다. 감사합니다^^