Java로 구현된 프로그램 문제
int a = 035 b = 0x35 c= 35
일때 printf 하면 각각 몇인지?
여기서 Java에서는 앞에 0이 붙으면 8진수, 0x가 붙으면 16진수이고 , 기본이 10진수 이므로 10진수로 바꿔야됨.
10진수로 바꾸는 법은 각각 8과 16을 곱하면 된다.
a = 35(8진수)를 바꿔야 함 > 3 x 8의1승 + 5 x 8의0승 = 24 + 5 > 29
b = 35(16진수)를 바꿔야 함 > 3 x 16의 1승 + 5 x 16의 0승 = 48 + 5 = 53
c는 그냥 35이다.
2. Java 프로그래밍 문제 풀이
int j, k, L ,result
j = 10 , k = 20 , L = 30
result = j < k ? k++ : --L 인데, 후치 연산이 매우 헷갈린다.
sysout.printf( d d d\n , result , k , L);
풀이는 J < K = 10 < 20 이므로 True; 여서 k++ 이다. 여기서! result는 20이다! 왜냐하면 ++ 후치연산이므로 현재 계산식은 건너뛰고 다음 코드에서 1이 증가된다.
즉, 결과는 20, 21 , 30이 된다.
3. 파이썬 연산식 문제.
a, b = 10;
a = 20 % 11 / 3 * 5 - b;
이면 연산식이 동등조건이면 왼쪽부터 먼저 계산이 된다.
즉 20 % 11 = 9 , 9 / 3 = 3 , 3*5 = 15 , 15 - 10= 5
a = 5 가 된다.
5. 자바 비트 연산자 문제
TMI : 비트 연산자 우선 순위는 & , ^ , | 순서이다. 중요하다.
int a,b,c,hap;
a = b = c = 2;
hap = ++ a | b-- & c--;
sysout.printf (d d d d ,hap, a , b, c)를 출력하시오.
hap = (++a | (b-- & c--) 순서이다. 비트 연산자에도 우선 순위가 있기 때문이다.
즉, 10진수로 바꾸면
0010
0010 을 and 연산자로 하면
0010 = 2 가되고
++a 이므로 전치 연산을 적용하여 a = 3 이된다.
0011
0010 을 or연산으로 하면
0011 이 되어 3이된다. 즉,
hap =3 , a = 3 , b= 1 , c = 1 이된다. b와 c는 --가 후치연산으로 들어가서 저 계산식 이후 1을 감소하였기 때문.
★ 언어에서 a*= b = 5 등 a*= , a/= 이런 문제가 나오는데
이런 문제들은 좌츨 a = a*를 두고 우측에있는 b =5 부터 계산해야된다. 암기하자.
즉 a = a * (b = 5) > a = 10 * 5 가 되어 a 는 50이 된다.
a = 3 , b = 4 , c = 5 , d =5이고
a += 6 + --b; 이면 a = (a +( 6 + 3 )) > 12가 되고
d *= 7 - c++; 이면 d = (d *(7 - 5)) > 10이 다.
a=12,b=3,c=6,d=10이 정답이다.
연산식의 순서를 굉장히 중요하게 생각하자!
6. 자바에서 중요한거
for, do while 등등 반복문에서 i <=10 또는 i < 10 이런 조건이 나오면
i는 10에서 끝나지 않고 , 11까지 진행 후 거젓이 판명되면 종료되는걸로 명시하자.
'📜✏️노트 자리없어서 적는 IT 지식📜✏️' 카테고리의 다른 글
정처산기 DML - SELECT(조회하다)문 (0) | 2025.04.15 |
---|---|
SQL (명령어, 정의 등등 알아보기!) (2) | 2025.04.09 |
[오답노트] 정처산기 프로그래밍 언어 문제풀이 (0) | 2025.03.30 |
정처산기 프로그래밍 언어 문제 풀이. (2) | 2025.03.27 |
정처산기 문제 기준 학습하기 : HW 관련 기술 (0) | 2025.03.24 |