일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 리뷰
- CS
- c#
- Win32
- c
- 포인터
- 이지스퍼블리싱
- 알고리즘
- Direct2D
- 백준
- 연산자
- 함수
- 김성엽
- 문법
- tipssoft
- doit코틀린프로그래밍
- Desktop
- Tips강좌
- Programming
- 프로그래밍
- VS ERROR
- Visual Studio
- Javascript
- Tips프로그래밍강좌
- c++
- 배열
- 지식나눔강좌
- 티스토리
- Kotlin
- Windows
- Yesterday
- Today
- Total
목록DEV/C C++ (119)
F.R.I.D.A.Y.
많은 프로그래머들이 작성된 코드로 인해 발생하는 각종 문제들에 골머리를 앓고 있습니다. 현업 개발자뿐만 아니라 일반 학부생, 아마추어 개발자들도 예외는 아닌데요, 오늘 포스팅에서는 이러한 버그를 잡는 방법중 하나인 assert에 대해 알아봅니다. 버그의 종류 먼저 버그의 종류를 알아보죠. 버그는 크게 두 가지 종류로 나뉩니다. 문법상 코드를 잘못 작성해 발생하는 문법오류(Syntax Error)와 문법상 문제는 없지만 예상치 않은 결과가 발생하는 논리적 오류(Logical Error)입니다. 여기서 잡기 힘든 코드는 논리적 오류입니다. 문법 오류의 경우 IDE의 인텔리센스가 잡아서 경고를 띄워주기도, 컴파일이 되지 않는 방법으로 사전에 알 수 있지만, 논리적 오류는 코드상 문제가 아니라 들어온 데이터, ..
C언어는 다양한 자료형이 있습니다. 서로 다른 두 자료형을 연산해주기 위해서는 어느 한 자료형을 다른 자료형으로 형변환(캐스팅, casting) 해주어야 연산을 진행할 수 있습니다. 오늘은 자료형, 특히 숫자 자료형의 형변환에 대해 알아보겠습니다. 상수의 기본형 형변환을 알아보기 전에 숫자 상수의 기본 타입을 알아야합니다. C언어에서 숫자라 함은 일반적으로 정수(char, short, int 등)와 실수(float, double 등)로 나누게 됩니다. 첫 순서로 정수형 상수의 타입을 알아봅시다. char ch1 = 65; short wch1 = 300; int var1 = 900; int var2 = 12'000; // 숫자가 길면 이렇게 홑따옴표(')로 구분할 수 있습니다. 이 상수들의 타입은 무엇일가..
변수를 사용하는 것만큼, 중요한 것이 변수 초기화 과정입니다. 이 포스트에서는 변수 초기화는 무엇이고 언제 초기화를 해야 하는지 알아봅니다. 초기화란? 먼저 시작에 앞서 초기화는 무엇인지 알아봅니다. 네이버 지식백과에선 초기화를 다음으로 정의하고 있습니다. 컴퓨터 프로그램의 최초 또는 미리 정해진 계수, 스위치, 주소, 기억 장치의 내용 등을 '0' 또는 기타의 값으로 설정하는 것. 일반적으로 설명을 할 때는 이렇게 말을 하곤 합니다만, 저는 다른 정의를 말씀드리고 싶습니다. 변수의 값을 예측 가능한 값으로 만드는 것. 실제로 변수는 메모리에 위치하는데, 메모리는 PC내 모든 프로그램이 공유해 사용합니다. 내 프로그램이 사용하기 전에 다른 프로그램이 사용했을 수 있다는 것입니다. 이러한 특성 때문에 메모..
말 그대로 부동 소수점, C/C++에서는 float나 double로 불리는 자료형은 == 연산자로 비교해서는 안됩니다. 그 이유를 알아봅시다. 3.14 == 3.14는 거짓일 수 있습니다. 3.14를 비교하는 코드를 보겠습니다. #include int main(void) { double fval = 3.14; printf("%.10lf %.10f \n", fval, (float)fval); return 0; } 같은 값이 나올까요? 아닙니다, 출력해보면 아래와 같이 오차를 포함하여 출력이 될겁니다. 오차 값은 때에 따라 달라질 수 있습니다. 어째서 이런 일이 벌어질까요? 컴퓨터는 소수를 표현하기 위해 대표적으로 두가지 방법을 사용합니다. 고정소수점 부동소수점 간단히 설명하면 고정소수점방식은 일정 비트는 ..
C의 main 선언 방식과 C++의 main 선언 방식이 차이가 있다는 얘기를 들었다. // C 타입 int main(void){ return 0; } // C++ 타입 int main(){ return 0; } main 파라미터에 void를 작성하면 C타입, 그렇지 않으면 C++타입이라고 하는데 자세한 출처는 찾아봐야겠다. 문서 하단을 참고하세요. 11. ANSI/ISO Standard C C++ 언어와는 달리, C 언어 표준에서는 main()이 재귀적으로 (즉, recursive하게, main이 다시 main을 부르는 경우) 호출되는 것을 막지 않았습니다.11.5 즉, 원한다면 main에서 다시 main을 부를 수 있습니다. 그러나, IOCCC에 출품할 것이 아니라면, 그런 코드를 만들 이유가 없습니..
Visual Studio 2019를 사용하시는 분은 아래 포스트로 이동해주세요. 이 포스트는 Visual Studio 2017을 대상으로 작성되었습니다. Visual Studio 2019에서 프로젝트 만들기 안녕하세요, 이번에 Visual Studio 2019가 나왔습니다! UI가 변경되면서 기존 VS2017에서 프로젝트 만들기와 차이가 있을 것 같아 이렇게 포스트를 하게 되었습니다. 그럼 시작합니다. 참고사항 프�� pang2h.tistory.com 프로젝트를 생성하는것은 집을 지을 때 터를 잡는 것과 같다고 말씀드리고 싶습니다. 여러 사항을 잘 관리해서 터를 잘 잡은 집이 튼튼하듯, 잘 만들어진 프로젝트가 오류 없는 프로그램을 만드는 데 일조합니다. 아마도 이 글을 접하시는 분은 C언어를 처음 접하거..
이웃 학부에서 홀수 마방진 프로그램을 과제로 받았단 소식을 접하고 동아리 개강총회가 끝나고 시간 들여서 만들어봤습니다. 다른 사람들의 코드와는 달리 굳이 수식을 계산하고 할 필요 없이 그냥 즉흥적으로 생각나는대로 코드를 작성한 것이라서 코드 길이나 시간복잡도에 있어서는 불리하지만 패턴 찾는데는 괜찮았던것 같아요. 1. 마방진? 마방진은 다음과 같은 정의를 가집니다. - 정사각형 공간에 1부터 차례로 숫자를 적되, 숫자를 중복하거나 빠트리지 않고 가로, 세로, 대각선에 있는 수의 합이 모두 같도록 만든 숫자의 배열을 의미한다. (네이버 지식백과 - 마방진, https://terms.naver.com/entry.nhn?docId=3386690&cid=60206&categoryId=60206, 2019.03...
프로그래밍을 어느정도 접하고 나면 필연적으로 접하게 되고 사용하게 되는 연산자가 있습니다. 비트(bit) 연산자와 시프트(shift) 연산자인데, 이번에 소개를 할 연산자는 시프트 연산자입니다. 비트 연산자는 다음에 시간이 된다면 포스팅하죠. 비트 비트 연산자와 더불어 시프트 연산자를 이해하려면 기본적인 메모리 저장 방법을 알아야합니다. 현대의 전자 컴퓨터는 0과 1, 이진수로만 작동을합니다. 따라서 모든 값을 저장하고 연산하는 과정을 이진수로 동작합니다. 인간이 10이이라고 쓰면, 컴퓨터는 다음과 같이 이진수로 변환을 합니다. 컴퓨터는 메모리를 관리하는 최소 단위가 1바이트이기 때문에 편의상 1바이트 표현으로 사용하겠습니다. 0000 1010 1은 어떻게 표현할까요? 0000 0001 위와 같습니다. ..
C언어의 구조체(struct) 문법이 강화되면서 C++에 클래스 문법이 만들어졌습니다. 이 클래스 문법은 클래스 생성자가 존재합니다. 생성자를 간단히 설명하면 클래스를 인스턴스 해 객체를 만드는 과정에서 만들어진 객체가 오작동 없이 잘 기능할 수 있도록 내부 데이터(멤버 변수)를 초기화해주는 함수라고 생각하면 될것 같습니다. 1. class의 기본 구조 #include class test { private: int a; // 멤버 변수들 int b; int c; public: test() { // 생성자 } ~test() { // 소멸자 } }; 클래스의 기본 구조는 위와 같습니다. 생성자는 클래스 이름과 같고, 괄호 안에는 매개변수가 없거나 하나 이상 들어갈 수 있습니다. C++의 함수 오버로딩 기능이..
우리가 물건을 보관할 때는 주로 어떤 공간을 나누어서 물건을 보관한다. 필기구를 보관할 때는 필통, 책을 보관할 때는 책장 등 담을 물건의 용도와 특징에 맞게 비슷한 내용들을 보관한다. 프로그래밍은 사람이 해결할 것들을 컴퓨터가 수행하도록 명령을 내리는 작업들인데, 명령을 내리기 위해서는 데이터가 필요하다. 무엇을 어떻게 할지 말이다. C언어를 포함한 대부분의(혹은 모든) 프로그래밍 언어에서는 변수라는 개념을 도입해 데이터를 저장할 수 있도록 했는데, 변수는 어떤 프로그램을 만들던(심지어 운영체제) 필수 불가결하게 사용해야하는 대상이다. 1. 자료형 변수를 알기 전에, 먼저 자료형이란 것을 알아야 할 필요가 있다. 택배를 생각해보자, 중고 장터에서 마우스나 휴대폰같이 작은 물건을 구매했다고 하자. 그럼 ..