C 4

[C/C++] 배열 shift 구현

[C/C++] 배열 shift 구현간혹 알고리즘 문제를 풀다보면 배열에서 쉬프트 연산이 필요할 때가 있다.이 경우 배열 뒤집기를 활용하여 간단히 해결할 수 있다. arr = [1, 2, 3, 4, 5] ​ arr을 왼쪽으로 2칸 Shift 연산을 진행한다면? arr = [3, 4, 5, 1, 2] ​ 이 결과가 나와야 한다. ​ ​ 1. 앞에서 부터 2번째 원소까지를 뒤집자. arr = [2, 1, 3, 4, 5] ​ 2. 2번째 이후 원소 부터 끝까지 뒤집자. arr = [2, 1, 5, 4, 3] ​ 3. 전체 배열을 뒤집는다. arr = [3, 4, 5, 1, 2] ​ 이를 응용하면 오른쪽 Shift도 가능하다. ShiftRight, ShiftLeftvoid reverse(int arr[], int..

아카이빙 2018.06.16

sizeof는 함수? 연산자?

sizeof는 함수? 연산자?C에서 sizeof는 함수로 착각하기 쉽지만 연산자로 불린다.sizeof는 다음과 같은 내용에서 함수(function)와 차이가 있다.type을 피연산자로 받을 수 있음 sizeof(int)괄호가 불필요 함 printf("%d\n", sizeof a);주소 출력이 안됨 printf("%p", sizeof);런타임 단계에서 실행되지 않음. sizeof a++ 은 a를 수정 하지 않음sizeof의 피연산자는 void 또는 함수 타입을 제외한 모든 타입을 받을 수 있음 참조https://stackoverflow.com/questions/1393582/why-is-sizeof-considered-an-operator

아카이빙/C, C++ 2018.05.26

[C/C++] define, NULL, sizeof 헷갈리는 예시들

[C/C++] define, NULL, sizeof 헷갈리는 예시들 예시1)#define A 12345 #define B 12345678910111213 ​ int main(){ printf("%d %d", sizeof(A), sieof(B)); return 0; }define 전처리기로 상수를 정의할 때, 형변환이 자동으로 되는지 궁금했음.결과는 4, 8로 자동 형변환이 된다고 생각하면 될 듯.다음과 접미사를 통해 명시적으로 타입을 선언할 수 있다.U, LL 등도 가능함.#define var1 10i8 // char '2' #define var2 10ui8 // unsigned char ​ #define var3 10i166 // short #define var4 10ui16 // unsigned sh..

아카이빙/C, C++ 2018.05.24

C언어 포맷출력 인자전달 (passing parameter to printf)

C언어 포맷출력 인자전달 (passing parameter to printf)C/C++에서 포맷 출력할 때 인자를 전달해야 할 경우가 있다.예컨대, https://www.acmicpc.net/problem/1022 백준온라인저지의 1022번 문제 (소용돌이 예쁘게 출력하기) 에서도 정수의 최대길이에 따라 출력 포맷이 달라진다. %dprintf("%d\n", 100); printf("%d\n", 20);일반적인 정수포맷의 출력방법. %ndprintf("%3d\n", 100); printf("%3d\n", 20);출력하는 정수의 최대길이를 정해준다.최대길이보다 짧은 경우 앞은 공백으로 채워진다. %*dint max_len = 3; printf("%*d\n", max_len, 100); printf("%*d\..

아카이빙/C, C++ 2017.07.13