' 'C언어' 태그의 글 목록
728x90

C언어 18

[C/C++] 9.3강 - 제어문, 조건 관리하기 (for 사용법)

(1) for문이란 특정 조건이 성립하는 동안 계속 반복하는 while을 이용해 같은 코드를 N번 반복하는 코드를 짤 수 있다. 그러나 while이 꼭 그러한 용도로만 사용되는 것은 아니다. 반면 for는 N회 반복에 거의 쓰이는 제어문이라고 할 수 있다. 적어도 N회 반복에 대해서는 while보다 간결하고 읽기도 쉽다. while과 비교하면서 for의 사용법을 확인해보자 (2) for의 사용법 #include int main() { int i; i = 0; //반복문에서는 관례적으로 i를 많이 사용한다. while (i < 10) { printf("i is %d\n", i); i++; } } 위 코드는 printf를 while로 10번 반복하는 코드이다. 이 코드에 주석을 조금 추가해보겠다. #incl..

Programming/C & C++ 2021.08.17

[C/C++] 9.2강 - 제어문, 조건 관리하기 (while 사용법)

(1) while 지난 강좌에서 if에 대해 알아보았다. if는 코드에 조건을 삽입해 그 조건이 성립할 때만 지정된 코드를 실행하는 제어문이었다. while도 if처럼 그 이름에서 기능을 유추할 수 있다. ~하는 동안.. 그렇다. while은 특정 조건이 성립하는 동안 코드를 실행한다. 아래 코드를 보자. #include int main() { int a = 10; while(a > 0) { printf("a is %d\n", a); a--;//감소 연산자를.. 기억해야 한다 } } a의 초기값은 10이다. 그리고 while의 조건을 보니 a \(> \) 0 이라고 한다. 이 말은, a가 0보다 클 동안 코드를 실행한다는 뜻이다. 여기서 실행되는 코드는 두 줄인데, printf로 a의 값을 출력한 후 a..

Programming/C & C++ 2021.08.01

[C/C++] 9.1강 - 제어문에서 논리 연산자 사용하기 (if의 사용법)

(1) 조건 여러 개 사용하기 #include int main() { int a, b; a = 3, b = 5; if (a == 3) { if (b == 5) { printf("a는 3, b는 5입니다\n"); } } } 저번 강좌에서 이렇게 if문 여러 개를 겹쳐 두 조건을 동시에 만족하는 경우에 코드를 실행할 수 있다고 했다. 하지만 이것보다 더 편리하고 직관적으로 여러 개의 조건을 사용하는 방법이 있는데, 그것이 바로 논리 연산자이다. (2) 논리 연산자란? 논리 연산자란, 연산자 파트에서도 말했지만 다시 말하자면 관계 연산자로 판단한 결과를 다시 논리적으로 비교하는 연산자이다. 그 종류는 아래와 같다. 연산자 용도 &&(AND) 양쪽이 모두 참일 때 참을 반환함 ||(OR) 양쪽 중 하나만이라도 ..

Programming/C & C++ 2021.07.20

[C/C++] 9강 - 제어문, 조건 관리하기 (if의 사용법)

(1) 제어문이란 제어문이란, 프로그램의 흐름을 특정 조건과 함께 관리하는 도구를 말한다. 입출력과 동시에 프로그램의 기본이 되는 것이 제어문이다. 사실 모든 프로그램은 입출력, 조건을 다루는 제어문으로만 이루어진다고 해도 과언이 아니다. 다만 그 형태가 조금씩 다를 뿐이다. 그만큼 제어문을 잘 다룰 수 있어야하고 제어문을 잘 다룬다면 더 좋은 알고리즘을 따를 수 있을 것이고, 이는 곧 프로그램의 성능과도 직결되는 문제이다. 대충 제어문이 중요한 이유를 주절댔으니 이제 본격적으로 알아보자 (2) 제어문의 종류 기본적으로 제어문은 크게 두 종류로 나뉜다. 1. 조건에 따라 코드를 실행함, 조건문 2. 조건에 따라 코드를 반복 실행함, 반복문 이중 이번 강좌에서 다룰 것은 1번, 조건에 따라 코드를 실행하는..

Programming/C & C++ 2021.07.11

[C/C++] 8강 - printf의 다양한 사용법 (소수점, 접두사, 여백)

이번 강좌는 printf 서식 문자의 여러 사용법을 알아볼 것이다. (1) 소수점 지정하기 #include int main() { double a = 3.14; printf("%lf\n", a); } 원래는 이렇게 소수점을 출력했다. 그런데 이렇게만 출력하면 아래와 같은 일이 발생한다. 더 깔끔하게 셋째 자리까지만 출력하려면 서식 문자를 이렇게 쓰면 된다 %.3lf %와 lf 사이에 .(소수점자릿수) 를 적으면 해당 자릿수까지만 반올림되어 출력된다.(float을 출력할 땐 f...) 3을 썼더니 반올림되어 3.142가 출력됐다. 물론 더 긴 자릿수까지 출력할 수도 있다. (2) 접두사 붙이기 우리가 주로 사용하는 진법체계는 0~9를 사용하는 10진법이다. 그런데 C언어에서는 2진법, 8진법, 16진법을 ..

Programming/C & C++ 2021.07.07

[C/C++] 7.1강 - 상수, C언어에서 상수 사용하기 (2) (enum, 열거형)

(1) 열거형이 필요한 이유 프로그래밍 언어의 문법이나 기능을 잘 활용하려면 해당 기능이 왜 생겨났고 언제 사용해야하는지 이해하는 것이 중요하다. enum도 마찬가지이므로 먼저 enum 없이 작성한 코드로 불편함(?)이 뭔지 보자. 코드 내부적으로는 각각을 식별할 수만 있다면 문제가 없는 요소들을 효율을 위해 문자열보단 정수로 저장하는 경우가 많은데 예를 들면 통신 관련 프로그램에서 패킷의 종류를 구분하는 경우 등이 있다. 아래 코드는 그러한 것들 중 색을 위한 변수들을 만든 것입니다. #include const int RED = 0; const int ORANGE = 1; const int YELLOW = 2; const int GREEN = 3; const int BLUE = 4; const int ..

Programming/C & C++ 2021.06.25

[C/C++] 7강 - 상수, C언어에서 상수 사용하기 (1) (const,#define)

(1) 상수란 프로그램에는 '변수'라는 것이 있다. 변수는 값을 저장하기 위해 할당된 메모리로 그 값이 언제든 변경될 수 있는 특성이 있다. 그러나 그 값이 절대 바뀌어서는 안 되는 경우들도 있는데, 원주율, 파이(\(\pi\)) 나, 국제 단위계서 질량의 표준을 규정하는 새 기준 플랑크 상수 등등 말이다. 이러한 것들은 절대 변해서는 안 되는 수들이다. 이러한 상수들을 관리할 때 그냥 프로그래머가 = 연산자를 쓰지 않기로만 약속한다면 언제 실수가 있을지 모르니 불안하기도 하고 디버깅을 할 때도 고려해야할 문제가 더 생긴다. 그래서 프로그래밍 언어에서는 언어적 차원에서 상수에는 값을 변경시킬 수 없도록 하는 문법이 존재하는데 이 포스팅에서는 C에서 그러한 상수 문법을 살펴볼 것이다. (2) 상수를 사용하..

Programming/C & C++ 2021.06.20

[C/C++] 6.1강 - C언어에서 형변환 하기(리터럴 접미사)

지난 포스팅에서 변수들을 형변환하는 법을 설명했다. 그런데 C에서는 기본적인 숫자 자체(literal)를 형변환 하는 경우에는 더 편리하게 변환할 수 있는 수단이 있다. 바로 리터럴 접미사를 붙이는 것이다. (1) 리터럴 접미사 C에서는 기본적으로 정수형, 실수형은 특별히 지정해준 타입이 없을 경우(접미사를 생략할 경우) 자동을 각각 int, double로 인식한다. (컴파일러마다 다를 수도) 그리고 대부분의 경우 이것이 큰 문제가 되지 않지만 일부 특수한 경우에서는 이것들을 다 구분해주어야 (short, int, long long | float, double) 하는 경우가 생길 수 있다. 그런데 사실 매번 (타입이름) 이렇게 적기에는 번거로웠는지 편의 문법들이 생겼다. 숫자 뒤에 리터럴 접미사(suff..

Programming/C & C++ 2021.06.16

[C/C++] 6강 - C언어에서 형변환 하기 (형변환 연산자)

프로그래밍을 하다보면 종종 형변환(type casting)이란 것이 필요하다 형변환이란, 말그대로 자료형끼리 서로 변환한다는 것인데 어떤 경우에 그것이 필요한지 아래 코드를 살펴보자. #include int main() { int a = 10; int b = 25; printf("%d / %d = %d\n", a, b, b / a); } 이 코드를 실행했을 때 출력되는 결과를 추측해볼 때 10 / 25 = 2.5 라 생각하실 수 있지만 아니다. 보다시피 2로 출력이 됐는데 그 이유는 a, b가 모두 정수이기 때문이다. 정수 / 정수는 결과가 무조건 정수로 나오게 된다. 그러니까, 25 / 10에서 2가 나온 것처럼 그 '몫'만 나온다는 뜻이다. 따라서 저것을 2.5로 출력되게 하려면 a나 b 둘 중 하나..

Programming/C & C++ 2021.06.16

[C/C++] 5.2강 - 시프트 연산자가 작동하는 방법

주제 : 비트 연산 중 시프트 연산 요구사항 : 시프트 연산의 기능에 대한 이해 (1) 버려지는 비트 위 코드에서 a는 char로 선언됐다. char는 범위가 -128 ~ 127 까지라고 했는데 어떻게 1024가 출력된 것일까? 그 이유는 연산자는 다릅니다. 왼쪽으로 밀린 것은 얄짤없이 버려집니다. (2) 채워지는 비트 진법에 대한 이해가 충분하다면 이진법에서 자릿수가 하나씩 늘어나거나 줄어든다면 그것은 십진법으로 표현했을 때 2배, 1/2배 된다는 것을 알고 있을 것이다. (십육진법도 마찬가지로 16배, 1/16배) 그리고 위에서도 확인했다시피 이것은 시프트 연산과 관련이 있다. 시프트 연산으로 > 1을 해버리면 해당 정수의 값이 2배, 또는 1/2배가 된다. (1) 예제에서 1 > 3); } 이걸 그..

Programming/C & C++ 2021.06.12
728x90

'