18. 자신의 값을 1 증가하거나 감소시키는 증감 연산자
안녕하세요. 언제나 휴일, 언휴예요. 이번에는 자신의 값을 1 증가하거나 감소시키는 증감 연산자를 알아보아요.
증감 연산자는 변수의 값을 1 증가하거나 1 감소할 때 사용하는 단항 연산자예요. C언어에서는 증감 연산자의 결과를 다른 변수에 대입할 수 있지만 Go 언어에서는 증감 연산자의 결과를 사용할 수 없어요. 또한 C언어에서는 증감 연산자를 피연산자 앞에 오는 전위 표현을 사용할 수 있었지만 Go언어에서는 항상 피연산자 뒤에 와야 합니다.
C언어에서 ++i 표현이나 i++ 표현은 모두 i를 1 증가하는 표현이예요. 하지만 증감 연산자가 피연산자의 앞에 오는 전위 표현과 뒤에 오는 후위 표현에 따라 연산의 결과는 차이가 있어요. 이는 개발자에게 혼돈을 줄 때가 많이 있었어요.
Go 언어에서는 증감 연산자는 자기 자신을 1 증가하거나 감소할 때 사용하며 연산의 결과를 사용하지 못하게 함으로써 개발자의 혼돈을 줄이고 있어요.
새 프로젝트를 생성하여 살펴보기로 해요.
[그림 1] LiteIDE에서 새 프로젝트 생성 및 소스 파일 추가
테스트를 위해 정수 형식 변수 i를 선언하고 2로 초기화하세요.
var i int = 2
fmt.Println("i:", i)
증가 연산자를 사용하면 자기 자신을 1 증가하여 3으로 변해요.
++ 연산자(증가 연산자)
i++ //i는 1 증가하여 3으로 변함
fmt.Println("i:", i)
감소 연산자를 사용하면 자기 자신을 1 감소하여 2로 변해요.
-- 연산자(감소 연산자
i-- //i는 1 감소하여 2로 변함
fmt.Println("i:", i)
[그림 2] 증감 연산자 사용 예제 실행 화면
다음처럼 증감 연산자를 피연산자 앞에 표현하면 컴파일 에러가 발생해요.
- 전위 표현으로 증감 연산자를 사용하면 컴파일 에러
++i
[그림 3] 증감 연산자를 전위로 표현하여 컴파일 에러가 발생
다음처럼 증감 연산한 결과를 다른 변수에 대입하는 표현도 컴파일 에러를 발생합니다.
- 증감 연산 결과를 다른 변수에 대입하면 컴파일 에러
re = i++
[그림 4] 증감 연산 결과를 다른 변수에 대입하여 컴파일 에러가 발생
이처럼 Go 언어에서는 C언어나 C++언어에서 표현이 가능하지만 개발자가 혼돈할 수 있는 표현을 컴파일 에러로 처리하여 모호함을 없앤 표현들이 많이 있어요.
관련 게시글
[구글 Go 하자] 16. 직관적인 사칙 연산과 비교해 보세요.
[구글 Go 하자] 17. 변수의 값을 특정 범위에서 순환하게 하기
[구글 Go 하자] 19. Go언어에서는 비교 연산자를 사용하는 곳이 많아요.
[구글 Go 하자] 20. Go언어의 논리 연산의 피연산자는 bool 형식만 올 수 있어요.
[구글 Go 하자] 21. 비트 단위로 연산하는 비트 연산자
'언어 자료구조 알고리즘 > 구글 Go' 카테고리의 다른 글
[구글 Go 하자] 23. 다양한 대입 연산자, 좌항에 상수는 올 수 없어요. (0) | 2016.06.01 |
---|---|
[구글 Go 하자] 22. 쉬프트 연산은 비트 단위로 자리를 이동합니다. (0) | 2016.06.01 |
[구글 Go 하자] 21. 비트 단위로 연산하는 비트 연산자 (0) | 2016.06.01 |
[구글 Go 하자] 20. Go언어의 논리 연산의 피연산자는 bool 형식만 올 수 있어요. (0) | 2016.06.01 |
[구글 Go 하자] 19. Go언어에서는 비교 연산자를 사용하는 곳이 많아요. (0) | 2016.05.30 |
[구글 Go 하자] 17. 변수의 값을 특정 범위에서 순환하게 하기 (0) | 2016.05.30 |
[구글 Go 하자] 16. 직관적인 사칙 연산과 비교해 보세요. (0) | 2016.05.30 |
[구글 Go 하자] 15. 부호 연산자도 연산자 (0) | 2016.05.30 |
[구글 Go 하자] 14. Go 언어 연산자 개요 (0) | 2016.05.30 |
[구글 Go 하자] 13. iota를 사용하여 규칙적인 상수 열거하기 (0) | 2016.05.28 |