안녕하세요 자바칩 프라푸치노입니다.
오늘은 연산자에서 배운 개념을 정리하는 문제를 풀어보겠습니다.
이거는 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
이제서야 아까 후위증가 한 값이 나타납니다.
'JAVA > java 문제' 카테고리의 다른 글
[자바JAVA]연산자 - 초를 입력받아서 시간, 분 , 초로 출력하기 (0) | 2020.09.20 |
---|---|
[자바JAVA]연산자 - 섭씨 화씨 변환하기 (0) | 2020.09.20 |
[자바JAVA] 연산자 - 논리연산자, 비교연산자 (0) | 2020.09.19 |
[자바JAVA]연산자 - 산술연산자 활용 (0) | 2020.09.18 |
[자바JAVA] 연산자 - 삼항연산자 (0) | 2020.09.18 |