-
01. C++ 기초사항C++ 2021. 1. 21. 11:11
C++ 기초 사항
- 프로그램 구조
- main 함수
- 프로그램의 진입점(entry point)
- #include
- 외부 프로그램 소스를 포함시키는 메크로
- iostream
- 입출력 관련 기본 라이브러리
- std 네임스페이스를 정의
- ::
- 스코프 연산자
- 어디에 정의된 것인지 지정할 때 사용
- using namespace
- 네임스페이스 생략을 위해 지정 (std::cout -> cout)
< ex01_hello.cpp >
#include <iostream> // # 붙으면 c++에선 추상의미 전처리를 하라! preprocessing // <iostream> 모듈! 인클루드가 파이썬에서 쓰는 용어로 import // 입출력과 관련된 모듈(c++에선 라이브러리라고 부름) using namespace std; // standard 표준 의미 // 기본으로 namespace std로 쓰겠다 int main(int argc, char const *argv[]) // 괄호에 매개변수 있으면 함수 // 파이썬에선 def, c++에선 바로 함수 명을 이용해서 정의내림 // 데이터타입을 사전에 명시해줘야 함, 정의한 데이터타입만 사용할 수 있음 //함수의 리턴타입도 명시해줘야 함 -> 지금 보는 데에선 int // 변수도 데이터 타입 명시해줘야 함 { // 파이썬에선 코드블럭을 들여쓰기로 했지만 c++에선 중괄호{} 이용해서 코드블럭 지정 cout << "Hello I am Jonga" << endl; // cout(console out), 데이터의 값을 출력할 때 사용하는 객체 // << -> 데이터 전송하겠다 그 옆에 전송할 데이터 적어준다 // 이 데이터를 cout으로 보내라(왼쪽객체에게) // 또 전송할 데이터가 있다면 <<를 또 쓰면 된다 // endl -> 줄 바꾸는 상수 std::cout << "Hello I am Jonga" << std::endl << "종아"; // cout의 사용법은 두 가지 // cout은 std라는 namespace에 정의되어 있음, using문 안 써줬다면 이렇게 적어줘야 함 return 0; // int로 리턴한다고 했으니! 데이터타입 일치해야 함 // 이 함수의 실행을 끝내겠다는 의미로 리턴 } // 모든 언어에서는 이름충돌이 생기기 마련이다 // c++에선 namespace로 이름충돌 다룬다 // cout이라는 식별자는 std의 범주 아래 정의하고 있는 것 // std::cout -> 다른::cout이 아니라 std에서 정의한 cout이다 // 코드러너로 실행 -> ctrl + alt + N // ex01_hello.cpp:16:5: error: 'cout' was not declared in this scope // using namespace 안 쓰면 생기는 오류, cout이 어디 소속인지 모르겠다 // 코드를 실행하면 .exe라는 실행파일이 생긴다 // 파이썬과 c++ 차이, 파이썬은 소스를 매번 파이썬이 실행시키는 방식 // c++은 컴파일해서 .exe를 만들어준다
< ex02_cout.cpp >
#include <iostream> using namespace std; int main(int argc, char const *argv[]){ cout << 10; cout << "개의 사과가 있습니다" << endl; cout << 10 << "개의 사과가 있습니다 "; return 0; }
< ex03_variable.cpp >
#include <iostream> #include <string> using namespace std; int main(int argc, char const *argv[]) { int i; i = 1000; // int i = 1000; // int i {1000}; cout << i << endl; string s {"hello"}; // string s = "hello"; cout << s << endl; return 0; }
- c++에선 문자열 표현할 때, 무조건 큰따옴표 ""로 묶어줘야 한다 (파이썬과 다르게 작은따옴표 안 된다'')
- c++에선 세미콜론;이 나와야 문장이 끝났다는 것
primitive datatype(기본데이터 타입)
자료형 설명바이트수
정수형 short short형 정수 2 int 정수 4 long long형 정수 4 long long 64비트 정수 8 문자형 char 문자 및 정수 1 부울형 bool 참이나 거짓을 나타낸다 1 부동소수점형 float 단일정밀도 부동소수점 4 double 두배정밀도 부동소수점 8 long double 두배정밀도 부동소수점 8
< ex04_boolean.cpp >
#include <iostream> using namespace std; int main(int argc, char const *argv[]) { bool b; b = true; cout << b << endl; b = false; cout << b; return 0; }
- boolean
-
true / false만 가질 수 있는 타입
- true -> 0이 아닌 모든 값, 일반적으로 1로 표현
- false -> 0
-
< ex05_char.cpp >
#include <iostream> using namespace std; int main(int argc, char const *argv[]) { char ch; ch = 'a'; cout << ch; // ch = 'ab'; -> error // ch = "a"; -> error // ch = ''; -> error return 0; }
-
컴파일되려면 적어도 문법에러(context error)가 없어야 한다
- char
- 글자 하나를 저장하는 데이터 타입
- 작은 따옴포로 묶어서 글자 표현
< ex06_string.cpp >
#include <iostream> #include <string> using namespace std; int main(int argc, char const *argv[]){ string s1 = "Good"; string s2 = "Morning"; string s3 = s1 + " " + s2 + "!"; cout << s3 << endl; string s4 = "Good"; string s5 = "good"; bool b = (s4 == s5); cout << b << endl; return 0; }
string
- 가장 적합한 데이터타입을 선정해야 한다
- string은 라이브러리의 객체로 지원된다, 기본데이터타입이 아니다
- 문자열을 저장하는 데이터 타입
- +연산자로 문자열 결합 가능
- ==로 내용 비교 가능
< ex07_const.cpp >
#include <iostream> #include <string> using namespace std; int main(int argc, char const *argv[]) { const double TAX_RATE = 0.25; int income = 1000; income = income - TAX_RATE * income; cout << income << endl; return 0; }
-
const
-
한 번 초기화하면 수정 불가
-
관례로 대문자로 이름 지정
-
상수 정의
-
const를 바꾸려고 하면 문법오류(신텍스?)가 난다 -> 실행파일이 안 만들어진다
-
에러에는 두 가지
문법오류, 런타임에러가 있다
< ex08_auto.cpp >
#include <iostream> #include <string> using namespace std; auto add(int x, int y){ return x + y; } int main(int argc, char const *argv[]){ auto d = 1.0; auto sum = add(3, 4); cout << d << " " << sum << endl; return 0; }
-
auto
- 데이터타입을 직접 기입하는 것이 아니라 코드를 컴파일러가 분석해서 자동으로 결정할 때 사용하는 것이 auto
-
함수 안에 선언된 변수, 지역변수
-
함수 밖에 선언된 변수, 전역변수
< ex09_cout.cpp >
#include <iostream> #include <string> using namespace std; int main(int argc, char const *argv[]) { int i = 100; cout << "변수 i의 값은 "; cout << i; cout << "입니다."; cout << endl; cout << "변수 i의 값은 " << i<< "입니다." << endl; // 연속사용 가능 return 0; }
-
cout
-
객체
-
c(consol : 디폴트 입출력장치(키보드, 모니터))
-
<< (오른쪽의 데이터를 콘솔로 보내라)
-
연속 작업 사용 가능
-
< ex10_cin.cpp >
#include <iostream> #include <string> using namespace std; int main(int argc, char const *argv[]){ int i; cout << "integer : "; cin >> i; double d; cout << "double : "; cin >> d; cout << i << " " << d << endl; return 0; }
-
cin
-
콘솔로부터 값을 입력받는 객체
-
변수의 데이터타입에 따라 자동으로 형변환해준다
-
데이터가 오른쪽으로 흘러가는 느낌 (>>)
-
-
cin에서 선언한 데이터타입이 아닌 것을 입력했을 경우
- 런타임에러가 난다
- 지금 내가 입력하는 데이터타입을 신경써야 한다
< ex11_cin.cpp >
#include <iostream> #include <string> using namespace std; int main(int argc, char const *argv[]) { string name; cout << "이름을 입력하세요: "; cin >> name; cout << name << "을 환영합니다." << endl; return 0; }
< ex12_op.cpp >
#include <iostream> #include <string> using namespace std; int main(int argc, char const *argv[]){ int x = 100; int y = 200; int result = x + y; cout << "x+y : " << result << endl; cout << "x-y : " << x - y << endl; cout << "x/y : " << x / y << endl; cout << "x/y : " << x /(double)y << endl; cout << "x % 3 : " << x % 3 << endl; cout << 1/2 << endl; cout << 1/2. << endl; return 0; }
-
연산자
-
/ 조심 -> 정수 / 정수 = 정수 (실수로 나오지 않는다)
-
ex) 1/2 => 0.5이지만 c++에서는 데이터타입이 고정되어 있기 때문에
-
정수 / 정수는 결과도 정수이다
-
0.5를 강제로 정수 0으로 만든다(소수점 나머지 버린다)
-
다른말로 말하면 몫연산
-
/ 의 결과값을 실수로 받고 싶다면 피연산자의 값을 float 혹은 double로 바꿔주면 된다
-
< ex13_incdec.cpp >
#include <iostream> #include <string> using namespace std; int main(int argc, char const *argv[]){ int x = 100; x++; cout << x << endl; x--; cout << x << endl; cout << ++x << endl; cout << x++ << endl; cout << x << endl; cout << --x << endl; cout << x-- << endl; cout << x << endl; return 0; }
print
101 100 101 101 102 101 101 100
-
증감연산자(변수 앞, 뒤에 붙는 경우에 따라서 달라짐)
- ++ : 현재 값에서 1 증가
- -- : 현재 값에서 1 감소
'C++' 카테고리의 다른 글
04. 클래스와 객체 (0) 2021.01.27 [열혈 C++] 02. C언어 기반의 C++ 2 (0) 2021.01.22 [열혈 C++] 01. C언어 기반의 C++ 1 (0) 2021.01.22 03. 제어구조와 배열2 (0) 2021.01.22 02. 제어와 배열 (0) 2021.01.21 - main 함수