정수형 변수 a, b, c 3개를 만든 후 각각 10, 20, 30을 입력받아, 다음 연산을 수행하는 식을 작성하고, a, b, c의 결과값을 출력하세요.
[문제]
int a = 10;
int b = 20;
int c = 30;
a++;
b = (--a) + b;
c = (a++) + (--b);
[풀이]
a++;
// a = 11, b = 20, c = 30
b = (--a) + b;
// a = 10, b = 30, c = 30
c = (a++) + (--b);
// a = 11, b = 29, c = 39
// a++ 이지만 후위 연산자이기 때문에 해당 시점에선 아직 10으로 계산되어서 39가 된다.
정답 : a = 11, b = 29, c = 39
논리형 변수 flag를 true 초기화 하고 다음 연산을 수행한 뒤 결과값을 확인해보세요.
[문제]
!!!!flag
[풀이]
true 로 초기화 했기 때문에 현재 값은 true 이고,
! 는 부정연산자이기 때문에 !flag 는 false 가 된다.
때문에, ! 부정연산자를 사용할때마다 결과값이 바뀌고,
총 4번 사용했기 때문에 결과값은 true 가 된다.
정답 : true
정수형 변수 x = 100, y = 33, z = 0 초기화 후에 다음 연산수행 후 x, y, z를 출력하세요.
[문제]
int x = 100;
int y = 33;
int z = 0;
x--;
z = x-- + --y;
x = 99 + x++ + x;
y = y-- + y + ++y;
[풀이]
x--;
// x = 99, y = 33, z = 0
z = x-- + --y;
// x = 98 y = 32, z = 131
// x-- 는 후위 연산자 이기 때문에 해당 계산식에서 계산할때에는 99로 계산한다.
x = 99 + x++ + x;
// x = 296, y = 32, z = 131
// x++ 는 후위 연산자이기 때문에 x++ 에선 기존 값 98로 계산되지만,
// 이후 x 값은 99로 계산된다.
y = y-- + y + ++y;
// x = 296, y = 95, z = 131
// y-- 후위 연산자기이때문에 32로 계산되고, y 는 후위 연산되어 31,
// ++y는 전위연산자기때문에 32로 계산된다.
정답 : x = 296, y = 95, z = 131