C와 C++
C 장/단점
장점 : 컴퓨터 처리구조와 유사해 실행속도 빠름, 효율성 높고 간결, 문법 간결, 로우레벨 프로그래밍에 사용(하드웨어 직접 제어 프로그래밍 가능), 이식성 좋음
단점 : 유지 보수 어렵고 디버깅 어려움
C++ 장/단점
장점 : 코드의 재활용성이 높음, 객체지향 프로그래밍(캡슐화, 상속성, 다형성), 오류 수정 쉬움, 이식성 좋고 유연
단점 : 절차지향언어보다 속도 느림
C / C++
C는 절차지향 프로그래밍 언어이고 c++은 객체 지향 프로그래밍 언어입니다. 절차지향은 프로그래밍을 순차적은 처리하고 객체지향은 객체 중심으로 데이터와 메소드를 만들어 엮어 처리합니다. 객체 지향은 캡슐화, 추상화, 상속, 다형성같은 특징을 가지며 구조화 되어있습니다.
C++의 기초 입/출력
c++출력문
#include <iostream> //선행처리 지시자
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
- c++의 기본 출력문입니다.
- c++에서는 입출력 헤더파일이 iostream입니다.
- using namespace std;를 선언 한 후, cout와 << 연산자를 이용하여 출력합니다.
- 이때, using namespace std;를 main위에 전역변수로 선언한다면, 함수를 만들 때도 굳이 여러번 선언해줄 필요가 없습니다.
- 'endl;'은 '\n'과 같은 역할을 합니다.
- c++에서도 \n은 c언어에서와 같은 역할을 수행하므로, 사용해도 크게 문제 될것은 없어 보입니다.
#include <iostream>
using namespace std;
int main()
{
int carrots;
carrots = 25;
cout << "나는 당근을 ";
cout << carrots;
cout << " 개 가지고 있다.";
cout << endl;
carrots = carrots - 1;
cout << "아삭아삭, 이제 당근은 " << carrots << " 개이다." << endl;
// cin.get();
return 0;
}
- 일반적으로 c++에서는 변수를 처음 사용 하는 곳 바로 앞에서 선언한다고 합니다.
- cout 함수는 prirntf() 함수처럼 %d나 %s 같은 사용할 필요가 없어서 더욱 편리합니다.
c++의 입력문
#include <iostream>
int main()
{
using namespace std;
int carrots;
cout << "당근을 몇개나 가지고 있니?" << endl;
cin >> carrots; // C++ 입력
cout << "여기 두개 더 있어. ";
carrots = carrots + 2;
// 다음 라인은 출력을 연결한다.
cout << "이제 당근은 모두 " << carrots << " 개이다." << endl;
return 0;
}
<출력문>
당근을 몇개나 가지고 있니?
12
여기 두개 더 있어. 이제 당근은 모두 14 개이다.
- cin >> carrots;은 사용자가 입력한 정수를 carrots 변수에 저장합니다. >> 연산자는 "추출 연산자"라고 불리며, 입력 스트림에서 값을 추출하여 변수에 저장하는 역할을 합니다.
- cin을 연속해서 사용할 수 있으며, 여러 변수에 대해 한 번에 입력받을 수 있습니다.
- cin은 변수가 선언된 타입에 맞춰 입력을 자동으로 해당 타입으로 변환합니다.
- cin은 입력 값이 공백, 탭, 개행문자로 구분된다고 간주합니다. 즉, 공백이나 개행이 나타나기 전까지의 값을 변수에 저장합니다.
- 기본적으로 문자열 입력 시 공백을 기준으로 입력이 잘립니다.
- 입력에 대한 오류 처리가 부족할 수 있습니다. 예를 들어, 사용자가 숫자를 입력해야 하는데 문자를 입력하면 오류가 발생할 수 있습니다
- qt프로그램에서 cin을 사용해봤는데, 입력을 받지 못하고, 변수가 쓰레기 값을 출력 해 냈습니다.
- qt에서는 입력하는 QLineEdit를 사용해야 한다고 합니다. 일단은 입력을 받는 예제에서는 vs code를 사용하였습니다.
char형과 int형의 비교
#include <iostream>
using namespace std;
int main()
{
char ch = 'M'; // M에 해당하는 ASCII 코드를 char형 변수 ch에 대입
int i = ch; // 같은 코드를 int형 변수 i에 저장
cout << ch << "의 ASCII 코드는" << i << "입니다" <<endl;
cout << "이 문자코드에 1을 더해보겠습니다." << endl;
ch = ch + 1; // ch에 있는 문자 코드를 변경한다.
i = ch; // i에 있는 새로운 문자 코드를 저장한다.
cout << ch << "의 ASCII 코드는" << i << "입니다." << endl;
// cout.put() 멤버함수를 사용하여 char형 변수 ch를 출력한다.
cout << "cout.put(ch)를 사용하여 char형 변수 ch를 화면에 출력: ";
cout.put(ch);
// cout.put()을 사용하여 문자 상수를 출력한다.
cout.put('!');
cout << endl << "종료" << endl;
return 0;
}
<출력문>
* Executing task:
M의 ASCII 코드는77입니다
이 문자코드에 1을 더해보겠습니다.
N의 ASCII 코드는78입니다.
cout.put(ch)를 사용하여 char형 변수 ch를 화면에 출력: N!
종료
* Terminal will be reused by tasks, press any key to close it.
- cout.put은 C++에서 출력 스트림인 std::cout에 특정 문자를 출력하는 데 사용되는 함수입니다. 이 함수는 주로 단일 문자를 출력할 때 사용됩니다.
- 예전에는 cout 객체가 문자 상수를 int형으로 저장했기 때문에 cout.put을 사용했지만, 현재의 cout는 이 문제를 해결 했다고 합니다.
C++에서의 변수 초기화
- 단일 변수 값을 초기화 하는데 {}를 사용할 수 있다.
int hamburgers = { 24 }; // hamburgers를 24 로 초기화
- =를 함께 사용할수도 있고, 사용하지 않을수도 있다.
int emus{ 7 }; // emus를 5 로 초기화
int rheas = { 12 }; // rheas를 12로 초기화
- 다음과 같이 중괄호 안에 공백을사용히여 초기화할수도 있다
int roes = { }; //roes를 0 으로 초기화
int psychics{ }; // psychics를 0 으로 초기화
wchar_t
#include <iostream>
#include <cwchar> // wchar_t 관련 함수 사용을 위해 필요
int main() {
wchar_t wideChar = L'가'; // '가'는 한글 문자
std::wcout << L"넓은 문자 출력: " << wideChar << std::endl;
return 0;
}
- wchar_t는 C++에서 넓은 문자(wide character)를 표현하기 위한 데이터 타입입니다.
- 이 타입은 주로 유니코드 문자나 다국어 텍스트를 다룰 때 사용됩니다.
- 일반적으로 char는 1바이트 크기로 ASCII 문자(영문자 등)를 표현하는 반면, wchar_t는 2바이트 이상(플랫폼에 따라 다름)으로 더 많은 문자를 표현할 수 있습니다.
auto 선언
C++에서 auto 키워드는 변수의 타입을 컴파일러가 자동으로 추론하도록 할 때 사용됩니다. C++11부터 도입되었으며, 주로 코드의 가독성을 높이고, 복잡한 타입 선언을 줄이는 데 유용합니다.
#include <iostream>
#include <vector>
int main() {
// auto를 사용하여 변수 선언
auto x = 10; // int로 추론됨
auto y = 3.14; // double로 추론됨
auto z = "Hello, World!"; // const char*로 추론됨
// 복잡한 타입을 추론할 때 유용함
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin(); // std::vector<int>::iterator로 추론됨
std::cout << "x: " << x << "\n";
std::cout << "y: " << y << "\n";
std::cout << "z: " << z << "\n";
return 0;
}
- auto는 항상 변수의 초기화와 함께 사용해야 합니다.
- 복잡한 타입일 경우, 명시적으로 타입을 알기 어렵기 때문에 오히려 혼란을 줄 수 있으므로 신중하게 사용해야 합니다.
'C++' 카테고리의 다른 글
' : '과 ' :: '의 차이점 (0) | 2024.09.26 |
---|---|
c++클래스(2) (0) | 2024.09.25 |
c++ 참조 (0) | 2024.09.25 |
c++ 클래스 (3) | 2024.09.25 |
vector와 array (0) | 2024.09.25 |
댓글