일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
Tags
- Classification
- PCA
- 지도학습
- 딥러닝
- 회귀
- 오블완
- regression
- supervised learning
- gpt
- deep learning
- LG
- LG Aimers
- Machine Learning
- LLM
- 분류
- OpenAI
- ChatGPT
- GPT-4
- LG Aimers 4th
- 해커톤
- 티스토리챌린지
- AI
- 머신러닝
Archives
- Today
- Total
SYDev
[객체지향프로그래밍] 2주차 정리 본문
경희대학교 컴퓨터공학부 이대호 교수님의 객체지향프로그래밍 수업 자료를 참고한 정리본
Values and Variables
#include <iostream>
using namespace std;
int main() {
cout << 4 << endl;
cout << "4" << endl; //string, 문자열
cout << '4' << endl; //character, 문자형
cout << "4\n";
cout << 4/2 << endl;
cout << "4/2" << endl;
cout << "4/2" << '\n'; // \n은 하나의 문자로 인식
cout << 5/2 << endl;
cout << 5/2*2 << endl; //앞에서부터 순서대로 연산
cout << 2*5/2 << endl;
cout << 1'234 << endl; //숫자 구분 연산자
int x;
x = 10;
//32bit integer의 최댓값인 -21억을 넘어가면, 다시 최댓값으로 돌아가서 범위 내에서 값을 가짐
cout << -3000000000 << endl; //64bit integer
cout << (x=-3000000000) << endl; // 32bit integer (- 2,147,483,648 ~ 2,147,483,647)
int a = 10; //declaration & assignment 동시에 선언 및 초기화(initialization)
int b{10};
int c{20};
return 0;
}
4
4
4
4
2
4/2
4/2
2
4
5
1234
-3000000000
1294967296
101020
Program ended with exit code: 0
선언과 정의(declaration & definition)
- 메모리를 할당하지 않고, 대상의 이름만 알려주면 선언
- 대상의 메모리가 할당된다면 그것은 정의
void main()
{
int a; // 변수의 선언과 동시에 정의
int b = 10; // 마찬가지..
}
선언
extern int a; //전역변수의 선언
int add(int a, int b); //함수의 선언(함수는 본문이 x)
class ClassID; //클래스의 선언
class c1; //전방 선언
class c2 {
private:
static c1 member;
//클래스 내의 정적 객체는 클래스 외부에서 정의
//때문에 member를 선언하는데 c1의 정의를 알 필요가 X
};
정의
int a; //변수의 정의1
int b = 10; //변수의 정의2
int add(int a, int b) {
//함수의 정의 (함수 본체가 존재)
return a + b;
}
struct C {
//구조체의 정의
int a;
int b;
};
class D {
//클래스의 정의
int a;
int b;
};
Identifiers
- 식별어
- Identifiers -> 최소 1개의 문자를 포함
- 첫 번째 문자는 알파벳 문자 (대문자 혹은 소문자 혹은 _)
- 두 번째 문자부터는 알파벳, _ 숫자
- 다른 characters 허용 X
- 예약어는 식별어로 사용 X -> int, struct, namespace, ...
Additional Integer Types
- short int(16 bit) <= int <= long int(32 bit) <= long long int(64 bit) -> 컴파일러나 머신에 따라서 같을 수 있음
- unsigned short <= unsigned <= unsigned long <= unsigned long long
- short int (short) 2bytes -32,768~32,767
- int, 4bytes, -2,147,483,648~2,147,483,647
- long int (long), 4bytes -2,147,483,648~2,147,483,647
- long long int (long long), 8bytes -9,223,372,036,854,775,808~9,223,372,036,854,775,807
- unsigned short int (unsigned short), 2bytes 0~65,535
- unsigned int (unsigned), 4bytes 0~4,294,967,295
- unsigned long int (unsigned long), 4bytes 0~4,294,967,295
- unsigned long long int (unsigned long long), 8bytes 0~18,446,744,073,709,551,615
- int x = 4456;
- int x = 4456L(or l); -> long
- int x = 4456LL(or ll); -> long long
- 정수형 값 앞에 0x 붙이면 16진수(hexadecimal) -> 0xFF = 15*16 + 15 = 255
- 정수형 값 앞에 0 붙이면 8진수(octal) -> 010
- 0b -> 2진수
-> 8, 16, 32, .. bit
-> u 붙으면 unsigned
#include <iostream>
using namespace std;
int main(void) {
cout << 3000000000LL * 3000000000LL << endl;
cout << 3000000000L * 3000000000L << endl;
cout << 10 << endl;
cout << 010 << endl;
cout << 0X10 << endl;
cout << 0b10 << endl;
return 0;
}
9000000000000000000
9000000000000000000
10
8
16
2
Program ended with exit code: 0
Floating-point Types
- float, 4bytes, 1.17549×10-38, 3.40282×10+38, 6digits -> 10진수로 봤을 때 약 6자리 저장하지만, 저장 가능한 범위는 크다.
- double, 8bytes, 2.22507×10-308, 1.79769×10+308, 15digits -> 15자리
- long double, 8 (12, 16)bytes, 2.22507×10-308, 1.79769×10+308, 15digits (10-4932, 10+4932)
-> 부호 저장 자리 하나, A 저장 자리 하나, 나머지 B 저장자리
#include <iostream>
//전처리문이므로, 컴파일하기 전에 PI를 지정 -> 컴파일할 때, PI라고 적힌 것을 3.14159로 수정한 다음 컴파일
//3.14159 뒤에 세미콜론을 붙이면 PI 위치에 3.14159; 가 그대로 생기기 때문에 PI가 문장 끝에 있지 않은 경우, 컴파일 오류 발생
//따라서 define할 때, 연산도 신경써서 괄호를 붙이는 것이 나음
#define PI (3 + 0.14159)
using namespace std;
int main(void) {
double pi = 3.14159;
cout << "Pi = " << pi << endl;
cout << "or " << 3.14 << " for short" << endl;
const double avogadros_number = 6.022e23, c = 2.998e8;
cout << "Avogadros number = " << avogadros_number << endl;
cout << "Speed of light" << c << endl;
const double x = 1.2e3;
cout << x << endl;
const double y = 1.2345678;
cout << y << endl; //1.23457이 출력되는데, 이는 y가 변한 게 아니고 cout에서 자릿수가 많으면 자동으로 반올림해서 출력하는 것
cout << 2 * PI << endl; //define PI할 때, 끝에 ;를 붙이면 cout << 2 * 3.14159; << endl; 형태가 돼버림
return 0;
}
Pi = 3.14159
or 3.14 for short
Avogadros number = 6.022e+23
Speed of light2.998e+08
1200
1.23457
6.28318
Program ended with exit code: 0
Characters
- 아스키코드를 기본으로 사용, 128개의 문자
- 알파벳 대문자, 소문자, 숫자, 줄바꿈 문자 등의 특수문자 등등
#include <iostream>
using namespace std;
int main(void) {
char ch1, ch2;
ch1 = 65;
ch2 = 'A' + 1; //char + int의 결과는 int
cout << ch1 + 2 << ", " << 'A' << endl;
char ch = '0' + 2;
cout << ch << ", " << 0 + 2 << endl;
cout << '0' + 2 << ", " << 0 + 2 << endl; //'0'은 아스키코드 48번
return 0;
}
67, A
2, 2
50, 2
- '\n'—the newline character
- '\r'—the carriage return character
- '\b'—the backspace character
- '\a'—the “alert” character (causes a “beep” sound or other tone on some systems)
- '\t'—the tab character
- '\f'—the formfeed character
- '\0'—the null character (used in C strings, see Section 11.2.6)
- '\\'. -> 역슬래쉬 char 쓰려면 두 번 입력
- std::cout << "C:\\Dev\\cppcode" << '\n';
Enumerated Type
- 나열형
#include <iostream>
using namespace std;
int main(void) {
enum Color { Red, Orange, Yellow, Green, Blue, Violet }; //0, 1, 2, 3, 4, 5의 값을 갖게 됨
cout << Red << Orange << Yellow << endl;
enum Animal { Cat = 1, Dog, Puppy = 2 };
cout << Cat << Dog << Puppy << endl;
enum class Shade { Dark, Dim, Light, Bright };
enum class Weight { Light, Medium, Heavy };
Shade color = Shade::Light;
Weight mass = Weight::Light;
cout << (int)color << " "<< (int)mass << endl; //(int) 없으면, cout에서는 Shade라는 자료형을 이용해서 정의하지 않았기 때문에, 컴파일 오류
return 0;
}
012
122
2 0
int y = 3;
double x = (double)y/2;
-> 해당 연산은 double이 더 범위가 넓으므로, 결과값이 double
Type Inference with auto
• auto count = 0;
• auto ch = 'Z';
• auto limit = 100.0; // auto x;
'3학년 1학기 전공 > 객체지향 프로그래밍' 카테고리의 다른 글
[객체지향프로그래밍] 8주차 정리 (0) | 2024.04.30 |
---|---|
[객체지향프로그래밍] 5주차 정리 (0) | 2024.04.01 |
[객체지향프로그래밍] 4주차 정리 (0) | 2024.03.27 |
[객체지향프로그래밍] 3주차 정리 (0) | 2024.03.19 |
[객체지향프로그래밍] 1주차 정리 (0) | 2024.03.06 |