' 'Programming/C & C++' 카테고리의 글 목록 (3 Page)
728x90

Programming/C & C++ 33

[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

[C/C++] 5.1강 - C의 다양한 연산자(사칙대입연산자,증감연산자,sizeof,비트연산자)

(이 포스팅은 지난 5강과 이어짐) (5) 사칙 대입 연산자 사실 이것이 정확한 명칭인지는 모르겠지만 그런데 사칙 연산 결과를 바로 대입하는 연산자이기 때문에 그냥 마음대로 이름을 붙임 ㅋ 종류는 사칙 연산자의 개수와 같으며 형태도 굉장히 직관적이다. 1. += 2. -= 3. *= 4. /= 5. %= 사용법은 아래를 보면 바로 이해가 갈 정도로 쉽다. int a = 10; a += 1;//이것과 a = a + 1;//이것은 같은 표현임 //마찬가지로 a = a * 3;//이것과 a *= 3;//이것은 같은 표현임 + (더하기) 연산을 수행한 결과를 = (대입) * (곱하기) 연산을 수행한 결과를 = (대입) 그럼 이제 아래 코드를 실행해보면 #include int main() { int a = 10;..

Programming/C & C++ 2021.06.12

[C/C++] 5강 - C의 다양한 연산자(사칙연산자,관계연산자,논리연산자)

(1) 연산자란 무엇인가 연산자란 말 그대로 연산을 위한 키워드들이다. 연산자에는 여러 종류가 있는데 1. 사칙 연산자 2. 관계 연산자 3. 논리 연산자 4. 비트 연산자 ... 등이 있다.. 연산자에는 연산 결과에 대한 '반환값'이란 게 있는데 처음 HelloWorld를 작성할 때 썼던 return 0; 그 반환과 같은 의미,, (2) 사칙 연산자 사칙 연산자는 정말 우리가 아는 그 사칙 연산자가 맞다. 다만 곱셈 연산자와 나눗셈 연산자의 경우 모양이 살짝 다른데 교과서에 나오는 '\(\times\)' 와 '\(\div\)' 대신 * 와 / 를 쓴다. float a = 10; float b = 5; printf("%.1f\n", a + b);//10 + 5 printf("%.1f\n", a - b);..

Programming/C & C++ 2021.06.09

[C/C++] 2.1강 - 변수 이름 규칙, 변수 이름 표기법 (카멜,파스칼,스네이크)

이 글에서는 변수 이름을 정할 때 지키는 규칙들에 대해 얘기한다. 컴파일러 차원에서 방지하는 표기도 있지만 협업을 하거나, 오픈소스 프로젝트를 진행할 때 변수 이름을 이해하기 쉽게 작성하는 것은 기본 매너(?)이기 때문에 잘 숙지하는 것이 좋다. (1) 변수명에서 허용되지 않는 것들 1. 변수명의 첫 글자는 무조건 문자여야 한다. 즉 아래와 같은 선언은 허용되지 않는다. int 1x = 3;//Error 2. 변수명에는 띄어쓰기가 존재할 수 없다. 어찌보면 당연한 것이.. 만약 가능해진다면 이게 변수명인지 뭔지 알기 힘들 꺼다. 3. 변수명에 포함할 수 있는 특수문자는 '@', '$' 뿐입니다. 그 둘만 연산자로써 쓰이지 않는다. 4. 예약어는 절대 사용할 수 없다. 예약어란 이미 컴파일러가 사용하려고 ..

Programming/C & C++ 2021.06.09

[C/C++] 4강 - 자료형에 대하여··· (부동 소수점, ASCII, signed & unsigned)

이 글은 C언어에서 사용되는 자료형에 대해 자세히 얘기하는 내용이다. 이전의 강좌들에 넣기엔 분량이 너무 많아져 생략했던 것들을 모았다. (1) 정수 타입 C언어에서 사용할 수 있는 정수 타입 종류 아래와 같다. short //2Bytes int //4Bytes long //4Bytes long long //8Bytes 저 중에서 int를 가장 많이 쓰게 될 것이다. 각 타입의 size는 개발 환경마다 상이할 수 있다는 걸 알아두자. 정수 타입의 범위를 구하는 법은 지난 강좌 2강(변수)에서 다뤘으므로 생략함. (2) 고정 소수점과 부동 소수점 (float, double) 컴퓨터에서 실수를 표현하는 방식은 크게 두 가지로 나눌 수 있다. 1. 고정 소수점 (Fixed Point) 2. 부동 소수점 (Fl..

Programming/C & C++ 2021.06.06

[C/C++] 3.1강 - scanf 사용 시 주의 사항!! (white-space 버그)

(1) scanf 사용 시 주의 사항 [버퍼를 초기화 해야하는 경우] 1. 여러 변수를 한 번에 입력하면 안되는 경우 아래 코드를 보자 #include int main() { int a, b, c; printf("a를 입력하세요 : "); scanf_s("%d", & a); printf("b를 입력하세요 : "); scanf_s("%d", & b); printf("c를 입력하세요 : "); scanf_s("%d", & c); printf("%d + %d + %d = %d\n", a, b, c, a + b + c); } 이 코드를 실행하면 이렇게 된다 저번에 한 a, b를 더하는 것과 똑같이 작동하는 코드이다. 그런데 여기서 scanf의 허점이 드러나는데. 입력값을 이렇게 해보쟈ㅏ a먼저 입력받은 후 b를..

Programming/C & C++ 2021.06.06

[C/C++] 3강 - 변수를 출력하고 입력받는 법 (printf, scanf, scanf_s)

(1) printf로 변수 출력하기 지난 1강에서 문자열을 출력하는 것은 해보았다. #include int main() { printf("Hello World!\n"); return 0; } 앞으로는 예시를 들때 include와 main 등은 꼭 필요한 경우가 아니면 생략하는 일이 빈번할 것인데 여러분의 넓은 아량으로 이해를.. 쓰다보면 굉장히 귀찮아져서.. 허허 여기에 변수를 출력하고 싶을 땐 어떻게 해야할까 각 타입에 맞는 서식 문자를 이용하면 된다. 예를 들어 정수를 출력할 때는 %d 서식 문자를 이ㅣ용한다. int a = 10; printf("%d\n", a);//10 출력 이렇게 하면 10이 출력될 것이다. a를 int형으로 선언하고 10을 대입했으니, int형에 해당하는 서식 문자인 %d를 사..

Programming/C & C++ 2021.06.05
728x90

'