JAVA/java 문제

[자바JAVA]연산자 - 쉬프트연산자, 논리연산자, 비교연산자, 증감연산자

자바칩 프라푸치노 2020. 9. 19. 18:20

안녕하세요 자바칩 프라푸치노입니다.

오늘은 연산자에서 배운 개념을 정리하는 문제를 풀어보겠습니다.

이거는 sysout하면 다 나오는 거니까 따로 코드는 안넣겠습니다.

 

이해를 하는 게 목적이니 하나하나 봅시다.

 

첫번째 

1 + x<<3 은 

leftshift연산자네요

연산자의 우선순위는 + 가 우선이기 때문에 먼저 x +1을 하구요

그럼 3이되네요 3을 왼쪽으로 3칸 옮겼으니

3 * 2의 3승이 되겠습니다.

 3* 8 =24 맞네요.

 

 

두번째 

y >= 5 || x < 0 && x > 2의 값은 : true

 

y 는 5이므로 y>=5는 true

x는 2이므로 x<0은 false

x>2도 false네요

그런데 우선순위가 &&가 더 높으니 

true || false가 되겠습니다.

그래서 결과는 true네요

 

세번째

y += 10 - x++의 값 : 13

y 는 복합대입연산으로 + 를 했으니

y + 10이나 마찬가지므로 15,

x++은 후위연산이므로 그대로 2 가 나오는데

- 연상을 했으니 13이나왔네요

저 코드는 (y+=10)-(x++) 과 같습니다.

 

네번째

x+=2의 값x+=2의 값 : 5

x는 앞에서 후위증가를 하여 3이 되었죠.

거기다 복합대입으로 2를 더했으니 5가 되었습니다.

 

다섯번째
!('A' <= c && c <='Z')의 값  : false

c는 'A'로 초기화했으니 'A'<=c는 true

c는 아스키코드를 몰라도 'Z'보단 작을 것이니 true

&&연산이므로 ture이지만 !not이 붙었으니 false네요

 

여섯번째

'C'-c의 값 : 2

아스키코드의 값 비교를 하는 것입니다.

'C'는 67 , c는 'A'이므로 65 

마이너스 하면 2

 

7번째 
'5'-'0'의 값 : 5

아스키코드의 값을 비교하는 것입니다.

' ' 안에 있으면 char타입이므로 

53- 48 = 5 이네요

(아스키코드값이라고 치면 이미지 많이 나옵니다.)

아스키 코드의 값을 몰라도 상식적으로 5보다 0이 숫자 5 높을테니 마이너스하면 5겠지요

 

8번째
c+1의 값 : 66

아스키코드 값 비교입니다.

65 +1 이네요

 

9번째
++c의 값  : B

c는 char형인데 ++하면 65가 66이 되겠구요

char형이므로 66아스키코드값이 char형으로 출력되겠습니다.

 

10번째
c++의 값  : B

후위 증가이므로 아직까지 바뀌지 않아 B가 나오구요

 

11번째
c의 값  : C

이제서야 아까 후위증가 한 값이 나타납니다.

 

728x90