C++문법
- 주석 : 실행(컴파일) 되지 않고, 설명만을 위해서 사용되는 문법.
- #include : 라이브러리 호출
※ C++ 문법을 사용할 때 주의해야 할 점.
1.대/소문자를 구분해야한다.
2.띄어쓰기를 통해 요소를 구분한다.
3.실행문의 마무리는 세미콜론(;)으로 한다.
1. 정수형 (0, 1, 2, 3, 4, ...)
int
short
long
long long
__int8, __int16, __int32, __int64 ...
2. 실수형
float
double
long double
3. 문자형
char
4. 문자열
string
1. 헝가리안 표기법
- 데이터 타입 약자를 접두어로 붙인다.
ex) int nMaxCount = 10;
2. 카멜 표기법
ex) int maxCount = 10;
3. 파스칼 표기법
ex) int MaxCount = 10;
int token_max_count = 10;
1. 대소문자 구분
2. 알파벳, 숫자, _(언더바)만 사용한다.
2-1. 숫자는 가장 앞에 올 수 없다.
변수의 4가지 속성
1. 이름 2. 크기 3. 값 4. 메모리 주소
데이터를 가공(연산)하는 모든 명령에 필요한 것들.
1) 어떤 종류의 연산자인지.
2) 우선순위 : 어떤 순서로 연산이 되는가
3) 결합순서 : 좌측부터 연산 or 우측부터 연산
**1. 사칙연산 : 산술연산자 (좌측부터 연산된다)**
+ : 더하기
- : 빼기
* : 곱하기
/ : 나누기 11 / 3 -> 3
% : 나머지 11 / 3 -> 2
*, /, % > +, -
**2. 대입연산자 (우측부터 연산된다)**
= : 왼쪽 항에 오른쪽 항의 값을 대입(복사)한다.
**3. 복합대입연산자**
+= : a += b; -> a = a + b;
-= : a -= b; -> a = a - b;
*= : a *= b; -> a = a * b;
/= : a /= b; -> a = a / b; (b == 0, 런타임 에러 발생)
%= : a %= b; -> a = a % b; (데이터타입이 정수형이 아닐 때)
**4. 증감연산자**
특정 변수의 값을 1씩 증가시키거나 감소시킬 때 사용하는 연산자.
변수명 앞이나 뒤에 ++, -- 를 붙여 사용.
**5. 관계연산자**
두 항의 값을 비교한 결과가 참(0을 제외한 모든 수 or true) 또는 거짓(0 or false)으로 반환되는 연산자.
a < b : 왼쪽 항이 오른쪽 항보다 작으면 참
a > b : 왼쪽 항이 오른쪽 항보다 크면 참
a <= b : 왼쪽 항이 오른쪽 항보다 작거나 같으면 참
a >= b : 왼쪽 항이 오른쪽 항보다 크거나 같으면 참
a == b : 왼쪽 항이 오른쪽 항과 같으면 참
a != b : 왼쪽 항이 오른쪽 항과 같지 않으면 참
**6. 논리연산자**
왼쪽 항과 오른쪽 항의 값을 각각 참과 거짓으로 연산해서
두 값을 비교해서 참과 거짓을 반환하는 연산자.
&& : 논리곱(AND)
a && b : a의 결과값이 참이고, b의 결과값이 참이면 1을 반환.
|| : 논리합(OR)
a || b : a의 결과값이 참이거나, b의 결과값이 참이면 1을 반환.
! : 논리부정(NOT)
!a : a의 결과값이 참이면 거짓을 반환, 거짓이면 참을 반환.
**7. 삼항연산자**
a ? b : c;
a의 결과값이 참이면 b실행문이 동작, 거짓이면 c실행문이 동작.
**난수 (랜덤값)**
rand(); // 0 ~ 32767 사이의 랜덤한 값이 반환된다.(rand의 데이터타입 : unsigned int로 4Byte)
함수 내부에 seed값이 존재함. 이 값에 의해서 리턴값이 정해진다.
기본적으로 seed : 1로 세팅되어 있다.
srand(time(NULL));
1. 3 ~ 7 사이의 랜덤한 숫자를 출력하는 프로그램을 작성하자.(3, 7 포함)
2. 가장 작은 값과 큰 값을 입력 받아서, 그 사이의 임의의 값을 출력하는 프로그램을 작성하자.
3. 프로그램을 실행하면 내부적으로 1 ~ 10 사이의 숫자가 정답으로 정해진다. 유저가 1 ~ 10 사이의 숫자를 입력하고, 맞으면 true, 틀리면 false를 출력한다.
#include <iostream>
using namespace std;
int main()
{
srand(time(NULL));
cout << ((rand() % 5) + 3) << endl; // 1. srand(time(NULL))을 사용하여 랜덤값 반환.
반환된 값을 % 5 함으로써 0 ~ 5 사이의 값 출력. 3 ~ 7사이의 값이 필요하므로 +3을 하면 3 ~ 7까지의 값 출력 가능.
int minNum;
int maxNum;
cout << "가장 작은 값을 입력해주세요." << endl;
cin >> minNum;
cout << "가장 큰 값을 입력해주세요." << endl;
cin >> maxNum;
srand(time(NULL));
cout << ((rand() % maxNum) + minNum) << endl;(오답)
cout << ((rand() % (maxNum - minNum + 1) << endl; (정답)
// 2. 최대값과 최소값을 입력 받은 후,
앞에서와 같은 방식으로 % 최대값 + 최소값을 해주면 입력한 최대값과 최소값 사이의 랜덤한 값 출력 가능. - >
(오답노트) % (최대값 - 최소값 +1) 을 해줘야 제대로 출력됨!
srand(time(NULL));
int answer;
cin >> answer;
((rand() % 10) + 1 == answer) ? cout << "정답입니다!" : cout << "오답입니다.." << endl;
// 3. 입력 받을 수를 answer라고 하면, 이를 삼항연산자를 이용하여 출력가능.
1 ~ 10 까지의 수를 % 10 + 1로 나타내고 관계연산자 == 를 이용하여 입력값과 같으면 정답,
같지않으면 오답이라는 삼항연산자 사용하여 정답 오답 여부 출력 가능.