본문 바로가기

프로그래밍/C, C++21

[C/C++] Switch문 쓸 때 가끔 하는 실수 아래는 흔하게 볼 수 있는 Switch문이다. #include int main() { int a = 3; switch(a){ case 1: printf("1\n"); break; case 2: printf("2\n"); break; case 3: printf("3\n"); break; default: printf("0"); break; } return 0; } 당연히 실행결과는 3일 것이다. 하지만 이건 어떨까? #include int main() { float a = 3.14; switch(a){ case 1.23: printf("1.23\n"); break; case 2.34: printf("2.34\n"); break; case 3.14: printf("3.14\n"); break; default:.. 2022. 3. 20.
C++ 구조체 Priority Queue #include #include using namespace std; struct MSG { int score; int name; }; struct compare { bool operator()(const MSG& s1, const MSG& s2) { return s1.score < s2.score; } }; int main(void) { priority_queue q; MSG a; a.name = 1; a.score = 100; q.push(a); a.name = 2; a.score = 50; q.push(a); a.name = 3; a.score = 60; q.push(a); a.name = 4; a.score = 80; q.push(a); a.name = 5; a.score = 30; q.push(.. 2021. 7. 20.
쉽게 짠 구조체 Insertion Sort #include #include #include #define MAX_TABLE 10 #define MAX_GROUP 5 #define MAX_TOP 3 struct GRADE { int group; int id; int score; } grade[MAX_TABLE]; GRADE top[MAX_GROUP][MAX_TOP]; // MAX_GROUP개 그룹이 있고, 각각의 그룹의 score가 가장 큰 수가 저장됨(MAX_TOP개) void insertionSort(GRADE dst[], GRADE src) { int i = 0; while (i src.score) // 오름차순(초기화를 MAX로 해주어야함) if .. 2021. 7. 13.
함수 인자에 있는 const는 어떤 의미일까? 가끔 어떠한 함수에서 인자에 const가 붙은걸 볼 수 있다. 예를들면 이런거다. long hash(const unsigned char* s) { long hash = 0; int c; while (c = *s++) { hash = (((hash 2021. 5. 28.
inline 함수란 무엇인가? inline 함수란.. 말 그대로 어떠한 함수를, main함수에 있는것 처럼 실행시켜 달라고 컴파일러에게 요청하는 것이다. 사용법은 일반 함수 이름 앞에 inline이란 말을 붙이면 된다. 컴파일러에게 강요하는 것이지, 컴파일러는 inline을 하는게 이득일지 아닐지를 판단하여 처리한다. 한국말보다 쉬운 소스코드로 예를들어 보겠다. 아래는 일반 함수 사용 시 이다. #include int sum(int a, int b) { return a+b; } int main(void) { int a = 5; int b = 10; printf("%d" ,sum(a,b)); return 0; } 굉장히 간단한 예시이다. printf에서 sum이라는 함수가 호출되면, sum이라는 함수의 주소값을 받아 온 후 함수의 내용.. 2021. 5. 25.
문자열에서 정수로 바꾸기. strcmp 없이 정수로 비교하기 long long의 자료형으로 소문자만 들어오는 문자열을 몇개까지 고유의 값으로 표현할 수 있을까? 정답은 12개 이다. 왜냐하면 영어 소문자는 26개이고, 5비트로 표현할 수 있는 개수는 32개이다. 그러면 64bit / 5bit = 12개이기 때문이다. 사실 남는 4bit가 아까워서 2021. 5. 25.