1. 다음의 프로그램은 잘못된 프로그램입니다. 어떤 부분이 잘못되었는지 찾고, 잘못된 이유를 설명하십시오.





byte 에다가 int 를 할당하고 있어서 컴파일 에러가 난다. 강제로 형변환할 수 있지만, 상황에 따라서 값이 잘릴 수도 있는 위험이 있기 때문에, 처음부터 total 을 int 로 선언하는 것이 좋다.





2. 다음의 식이 각각 어떤 값을 산출할지 괄호 안에 쓰십시오.


a) 10 % 7 (   )

b) --100 (    )

c) "10*20=" + 10 * 20 (    )

d) 12e2 < 1234 (    )

e) true & false | true (    )

f) 100 == 100.0 (    )

g) true && false || true (    )

h) 3 & 4 (    )

i) 4 == ( 3 + 1 ) ? 0 : 1 (    )

j) 1 << 3 (    )




a) 10 % 7 (  3  )

b) --100 (  99  )

c) "10*20=" + 10 * 20 (  "10*20=200"  )

d) 12e2 < 1234 (  true  )

e) true & false | true (  true  )

f) 100 == 100.0 (  true  )

g) true && false || true (  true  )

h) 3 & 4 (  0  )

i) 4 == ( 3 + 1 ) ? 0 : 1 (  0  )

j) 1 << 3 (  8  )


프로그램으로 검증해 보았다. 그런데 같은 리터럴에 증감 연산자를 적용하거나 같은 리터럴을 비교하는 것은 컴파일 에러가 나서 따로 변수에 넣었다.



다음과 같은 결과를 얻을 수 있었다.


a) 3

b) 99

c) 10*20=200

d) true

e) true

f) true

g) true

h) 0

i) 0

j) 8




3. 다음 중 잘못된 식을 고르고 어디가 잘못되었는지 설명하십시오.


3 & 100L    ++num++    true + 3    "-_-" + true + 3

true > false    0xFF00 || 0x00FF    --100    120e3 << 2




++num++ : 증감 연산자는 하나만 붙일 수 있다.

true + 3 : boolean 은 정수로 변환될 수 없다.

true > false : boolean 은 대소비교를 할 수 없다.

0xFF00 || 0x00FF : 정수는 boolean 으로 변환될 수 없다.

--100 : 리터럴에는 증감 연산자를 붙일 수 없다.

120e3 << 2 : 실수에는 shift 연산자를 붙일 수 없다.


+ Recent posts