Java] Operator Training
Problem
1 | int x = 2; |
1번. 1 + x << 33
+와 += 의 연산자 우선순위가 다르다.
+는 비트 쉬프트 연산자보다 우선순위가 빠르지만, +=는 느리다.
(1 + 2) << 33으로 나타낼 수 있고, int의 비트는 32까지이므로 결국은 1번 왼쪽으로 보낸 결과
즉, (1 + 2) * 2의 결과와 같다고 보면 된다.
답: 6
2번. y += 10 - x++
y += 10이 오류가 날 것이라고 예상하였지만 아니다.
값을 초기화하면서 출력이 가능하다.
5 - 2 + 10 의 결과인 13이 나온다.
x++은 후위 증감 연산자로 후위식은 해당 값 처리 후, 증가된다.
답: 13
3번. x += 2
위에서 후위 증가되었다는 것을 잊어서는 안된다.
답: 5
4번. ‘C’ - c
A와 C는 2개의 차이가 있다.
답: 2
5번. ‘5’ - ‘0’
5와 0은 5개의 차이가 있다.
답: 5
6번. c+1
c는 ‘A’이고 A는 int형으로 65의 값을 가지고 있다.
Promotion(타입 확장)이 이뤄져서 int형의 값이 나오게 된다.
답: 66
7번. ++c
c가 가지고 있는 값에서 전위 증가로 1을 더한 값을 만들어 주면 된다.
c는 char type
이기에 계산을 위해서 65 + 1이 된 int형을 가졌다가 c 변수가 가지고 있는 char형으로 Casting(타입 축소)가 이뤄진다.
답: B
8번. c++
위와 비슷하나 후위 증가는 해당 값이 처리되고 나서 증가하기에 현재 나오는 값의 변화는 생기지 않는다.
답: B
9번. c
위에서 후위 증가가 이뤄졌기 때문에 1을 더한 값이 나온다.
7번과 같은 이유로 char 타입이 나온다.
답: C