본문 바로가기

C++22

[C/C++] unsigned char 타입에 음수를 넣은 값이 signed short, int로 형변환 하면 이상한 값으로 변하는 이유 혹시, 프로그래밍을 하다가 분명히 unsigned char 타입에 음수를 넣었는 데, signed short이나 int로 형변환하니 이상한 값으로 변하는 경우를 경험하신 적이 있으신가요? 혹은 signed에서 unsigned로 넣었을 경우는 있으신가요? 이미 경험이 있으시다면 그 이유도 아시고, 이후 프로그래밍에서는 조심하려고 하실 것으로 생각합니다. 이 문제는 프로그램이 복잡하다면, 생각보다 찾기 힘들 수도 있기 때문에 코드를 짤 때 주의해야 하는 부분이라고 생각합니다. 그래서 이번 포스팅으로 정리해놓으려고 합니다. 또한, 이게 무슨 문제를 일으킬 지 모르시는 분들을 위해서도 글을 씁니다. 그럼, 바로 설명으로 들어가도록 하겠습니다. 들어가기 전에.. 포스팅을 위해 작성한 예제에 대해서 간단하게 typ.. 2019. 7. 6.
C++ virtual, override, final 키워드별 사용하는 이유를 알아보자. C++을 입문하시면서, 상속에 관해서 공부를 하셨을 거에요. 이때, 나오는 키워드가 virtual 입니다. 때문에, virtual 이라는 키워드는 꽤나 눈에 익으셨을텐데요. 혹시, override와 final도 오버라이딩에서 사용하는 키워드라는 것을 아시나요? 사실, override와 final은 C++11 이후에 등장합니다. 때문에, 못 보셨을 수도 있습니다. 하지만, 새롭게 추가된만큼 어딘가에 사용하면 유용하다는 뜻이겠죠? 이번 포스팅에서는 virtual, override, final 키워드가 각각 어떠한 경우에 사용하는 지에 대해서 정리하도록 하겠습니다. 일단, 각 키워드가 무엇을 뜻하는 지 알아보자. 위에서 말한 것처럼, virtual, override, final은 모두 상속 관련 오버라이딩을 .. 2019. 6. 18.
[C++] switch case문 jump to case label 오류 문제 해결 방법 switch case 문을 사용하다보면 아래와 같은 에러가 발생할 경우가 있다. 1error: jump to case label [-fpermissive]cs 처음에는 이것에 대해서 이해할 수가 없었는데, 찾아보니 굉장히 간단한 문법 오류였다. 사실, C/C++ 문법에서 switch case문은 굉장히 기초적인 문법 중에 하나라서, 이러한 오류가 발생할 지는 몰랐는데, 우연하게 위와 같은 오류를 확인할 수 있었다. 사실, 이때까지만 해도 미관상으로만 case 문에 블락 처리하는 것인줄 알았다.. 1. 오류 확인 우선, 아래 코드를 보자.123456789101112131415161718192021222324#include int main(void) { int num; std::cin >> num; swit.. 2019. 1. 20.
[C || CPP] C++ 배열 초기화 하는 방법 (fill_n) 알고리즘 문제를 풀거나, 프로그래밍을 하다보면 배열을 사용하는 경우가 많을 것이다.배열을 사용하면, 당연히 초기화를 해야할 것이다. 이때, 배열을 초기화하는 방법이 C과 C++이 약간은 다르다고 할 수 있다. (혹시, 내용이 잘못되었다면 댓글 부탁 드립니다.) 간단하게, 정수형 배열을 C와 C++에서 어떻게 다른 지 예제로 확인해보자. 먼저, 간단한 배열이라면 아래처럼 초기화할 수 있다.1int arr[10] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1};cs 위의 경우는 정말 간단한 배열일 때나 가능할 것이다. 언제 초기화 할지..물론, for문으로 반복해서 초기화 하는 방법도 있겠지만, 더욱 간단한 방법을 찾아보자. 먼저, GCC를 사용할 때는 다음과 같은 방법을 사용할.. 2018. 10. 14.