반응형

C++ 3

[C/C++] 배열 인덱스에 음수(마이너스) 값 넣기

오늘은 C/C++에서 배열 인덱스에 음수 값을 넣게 되면 어떻게 동작하는지 한번 알아보도록 하겠습니다. 궁금해서 직접 실험해 보았는데, 재밌는 내용이 있어서 지금부터 소개해 보고자 합니다.타 언어에서의 배열 인덱스 음수값 해석 배열 인덱스에 마이너스 값을 넣는 것은 일반적으로 두 가지 중 하나로 해석됩니다. 1) 허용하지 않음 자바, 고(Go) 같은 언어가 대표적입니다. 컴파일 단계에서 에러가 발생합니다.  2) 배열의 마지막 요소부터 접근 파이썬, 루비가 대표적입니다. -1부터 숫자가 하나씩 작아질수록 배열의 마지막 요소에서 거꾸로 접근합니다.  C/C++ 배열 음수 인덱스 실험 그렇다면 C/C++에서 배열에 음수 인덱스를 사용하면 어떻게 동작할까요? 궁금해서 직접 실험해 보았습니다.  개인적으로 허용..

[C/C++] 정수형 변수에 논리 부정 연산하기

오늘은 C언어에서 정수형 변수에 논리 부정(NOT) 연산을 하면 어떻게 될지 알아보도록 하겠습니다. 개인적으로 궁금해서 직접 실험해보고 이렇게 글로 남기게 되었습니다. C언어와 Boolean 타입 C언어는 Boolean 타입을 지원하지 않다 보니 논리형 변수와 정수형 변수를 공유합니다. 즉, 조건식에 정수형 변수가 들어갈 수 있다는 것입니다. 이 때문에 C언어에서는 BOOL이라는 사용자 정의형 타입을 만들어서 씁니다. C99부터 _Bool 타입이 표준으로 들어왔으므로 해당 타입을 사용해도 됩니다. 물론 그렇다고 해서 정수형 변수가 논리값으로 사용할 수 없는 것이 아니기 때문에 여전히 크게 다를 것은 없습니다. C++에서는 bool 형 타입을 지원하지만, 이 역시 자바나 타 언어에서의 true, false..

[C/C++] STL size 함수 숫자 오류

오늘은 C++ STL에서 size 함수 사용 시 숫자 오류가 발생하는 것에 관해 알아보고자 합니다. 어려운 문제는 아니고, 아마 굳이 C++이 아니더라도 다른 경우에도 쉽게 발생할 수 있는 문제라고 생각합니다. 다만, 한글로 된 자료가 별로 없는 것 같아 이렇게 글을 작성하게 되었습니다. 문제 상황 STL에서 제공하는 여러 자료구조 라이브러리를 보면 size 함수가 있습니다. size 함수는 자료구조 객체에 포함된 원소의 개수를 리턴하는 간단한 함수입니다. 저 같은 경우에는 이 size 값에서 다른 숫자를 빼주면서 음수 여부를 체크하려고 했는데 코드가 이상하게 동작했습니다. 비슷한 다른 사례를 찾아보니 아래와 같은 코드에서 문제가 발생하는 경우가 많았습니다. vector v; for (int i=0;i

반응형