티스토리 뷰

안녕하십니까?

이번에는 단항 연산자에 대해 알아보겠습니다


저번 2편으로 이항 연산자에 대한 설명을 끝냈습니다

이제 단항 연산자와 비트 연산자 이 두가지가 남았는대요

이부분은 이항 연산자보단 쉽다고 느낄겁니다 ㅋ


참고로 단항 연산자란 피 연산자가 1개인 연산자 입니다 저번에 논리 연산자 배우면서 !에 대해 배우며 언급을 했죠?



그럼 부호 연산자로 사용되는 +와 -를 배워보도록 하겠습니다

저번시간에 +와-는 이항 연산자로 덧셈과 뺄셈을 하는 역할을 한다고 배웠습니다

그런대 이 두 연산자는 부호 연산자로도 쓰입니다


부호 연산이라는 단어가 약간 이해가 안될수도 있는데


-(-6), -(+9)


이 두 정수를 수학적으로 계산해 보도록 하겠습니다

-에 -가 오면 +가 되어 +6이 되고

+에 -가 오면 -가 되어 -9가 된다는건 너무나도 뻔하고 쉬운 소리입니다 (만약 이해가 안되시면 중학교 1학년을 마치시면 이해가 되실겁니다)


부호 연산자는 이 의미와 동일합니다

그러므로 단항 연산자 -는 부호를 바꿔주는 역할을 합니다

그러면 +는 무슨 역할을 할까요? 딱히 하는 일은 없습니다


그냥 음수가 아니다 라는것을 강조하기 위해 붙히듯이 말이죠

그럼 +는 무시되거나 연산이 안되는 주석같은 연산자는 아닐까요?


short m1=6;


short m2=+m1;


위 코드를 컴파일 하면 에러가 발생합니다

모든 정수는 java에 의해 int형으로 형변환이 이루어 진다고 했습니다

그러므로 +가 연산자로 기능을 하게 된다면 +6을 계산하기 위해 int형으로의 변환이 필요한 겁니다


그런대 여기서 int형을 short에 저장할수 없으므로 컴파일 오류가 발생하는것 입니다

(short)로 명시적 형 변환을 해줘야 에러가 발생하지 않는것 이지요


이처럼 +연산자도 주석같은 연산자가 아닌 실제로 연산을 하는 연산자 인것을 확인해 봤습니다 하는일은 없지만요 ㅋㅋㅋㅋㅋㅋ



그럼 이번에는 값을 더하고, 빼는 연산자를 알아보도록 하겠습니다

그냥 단도직입적으로 돌직구를 던진다면 ++와 --가 연산자의 기호입니다

"뭔 +를 두번쓰고 -를 두번쓰는게 연산자예요 ㅋㅋㅋㅋㅋㅋㅋ"

라고 하시면 안됩니다 --;


이 연산자는 피 연산자의 앞과 뒤에 올수 있습니다


++number1

number++


이렇게 말이죠

그런대 이 두가지의 뜻은 완전 다릅니다

먼저 피 연산자 앞에 있는 ++를 prefix연산자라 합니다 접두사 연산자라고 번역해야 하나요?


그러면 뒤에 오는 연산자는 뭐라 할까요?

postfix연산자라 쓰고 접미사 연산자라 읽습니다


prefix연산자는 피 연산자 앞에 오는대요

기능은 피 연산자의 값을 1 증가(감소)시킵니다


또한 postfix연산자도 피 연산자의 값을 1 증가(감소)시킵니다

그런대 postfix는 그 행이 끝난다음 값이 적용이 됩니다


int number1=10, number2, number3;

number2=--number1

number3=number1--


이런 구문이 있다고 합니다

처음에 number1,2,3를 선언하고 number1은 선언과 동시에 초기화를 하고 있습니다

두번째 행에서는 number1의 수를 1감소 시킵니다 그러므로 10-1=9가 number2에 들어가게 되는거지요

마지막에서 number1의 수를 1감소 시키라고 합니다 그런대 postfix연산자는 그 다음행에서 값을 적용하므로 number3에도 9가 들어가게 됩니다

만약 마지막에 또다른 행이 있다고 한다면 그 행부터 number1의 값은 8이 되겠죠?


정리하자면

prefix연산자는 : 연산자 앞에 위치하며 피 연산자의 값을 1 증가(감소)시킨다

postfix연산자는: 연산자 뒤에 위치하며 피 연산자의 값을 1 증가(감소)시킨다, 단 증가(감소)가 일어난 행에서는 이전 값으로 인식하고 다음 행에서 부터 증가(감소)된 값으로 인식한다


헷깔릴수 있습니다 잘 정리해 두세요


이렇게 해서 단항 연산자에 대한 설명을 마치겠습니다

다음 한 강좌로 비트 연산자를 끝낼수 있을듯 하네요 ㅋ 그리고 연산자도 마치게 되는 ㅎㅎㅎㅎㅎㅎㅎㅎㅎ

연산자가 끝나면 그때부터 저랑 진도가 비슷해 지는군요 ㅋㅋ


다음 강좌로 비트 연산자 끝내고 그 다음강좌에서는 if~else에 대해 알아볼겁니다 ㅎㅎㅎㅎㅎㅎㅎㅎ



저작자 표시 비영리 변경 금지
신고
댓글
댓글쓰기 폼