2022. 4. 7. 17:30ㆍC++
연산자 = 모든 명령에 필요한 것
1) 어떤 종류의 연사자들이 있는지?
2) 우선순위 : 어떤 순서로 연산이 진행되는지?
3) 결합 순서 : 좌측부터 연산하는 연산자, 우측부터 연산하는 연산자
(left_velue) (right_velue)
1. 사칙연산 : 산술 연산자
+ : 더하기
- : 빼기
* : 곱하기
/ : 나누기해서 나온 몫 ex) 11/3 하면 3이 나온다.
% : 나누기 하고 남은 나머지 ex) 11%3 하면 2가 나온다.
int left_value = 14;
int right_value = 3;
cout << left_value + right_value << endl; //값 17
cout << left_value - right_value << endl; //값 11
cout << left_value * right_value << endl; //값 42
cout << left_value / right_value << endl; //값 4
cout << left_value % right_value << endl; //값 2
2. 대입 연산자
= : 왼쪽 항에 오른쪽 항의 값을 대입한다. (복사하는 느낌)
3. 복합대입연산자
+= : a = a + b; 이 부분을 간편하게 a += b; 이렇게 짧게 표기 가능
-= : a = a - b; 이 부분을 간편하게 a -= b; 이렇게 짧게 표기 가능
*= : a = a * b; 이 부분을 간편하게 a *= b; 이렇게 짧게 표기가능
%= : a = a % b; 이 부분을 간편하게 a %= b; 이렇게 짧게 표기가능
/= : a = a . b; 이 부분을 간편하게 a /= b; 이렇게 짧게 표기 가능 (a와 b는 정수 타입이어야 한다.)
쓰는 과정
left_value += right_value;
cout << left_value << endl;
이런식으로 먼저 식으로 쓰고
정수를 걍 써버리면 값이 뜬다.
4. 증감연산자
특정 변수의 값을 1씩 증가시키거나 감소시킬 때 사용한다.
변수의 앞이나 뒤에++ / --를 붙여서 사용한다.
left_value의 값은 14
cout << left_value << endl; // 출력 : 14 , 메모리: 15
cout << ++left_value << endl; //출력 : 15 , 메모리 : 16
5. 관계 연산자
두 값을 비교한 결과가 참(1, true)인지 거짓(0, false)인지 반환하는 연산자
< : a < b : 왼쪽 항의 값이 오른쪽 항의 값보다 작으면 참을 반환한다.
>: a > b : 왼쪽 항의 값이 오른쪽 항의 크면 참을 반환한다.
<= :
>= :
== : 왼쪽 항의 값과 오른쪽 항의 값이 같을 때, 참을 반환한다.
!= : 왼쪽 항의 값과 오른쪽 항의 값이 다를 때, 참을 반환한다.
c++에서는 true와 false를 1과 0으로 알려준다
관계 연산자 문제
1. 고객의 나이를 입력받아서 미성년자(19세 이하)이면 false를 출력 , 성인이면 ture 출력.
2. 아까 입력 받은 나이를 기준으로, 주민등록증 발급대상(20살만)이면 true를 아니면 false를 출력.
3. 입력받은 나이가 아홉수(1~9)인지 확인해서 true, false를 출력
Tip= boolalpha 이 단어는 1과 0을 true, false로 출력해준다
정답
cin >> age;
cout << boolalpha;
cout << "고객님은 미성년자가" << (age <= 19) << "이다" << endl;
cout << "고객님은 주민등록발급대상" << (age >= 20) << "이다" << endl;
cout << ((age % 10) == 9) << endl;
6.&& : 논리곱(AND)
a && b : a의 결과값이결괏값이 참 b의 결괏값이 참이면 1을 반환
|| : 논리합(OR)
a || b : a의 결과값이 참이거나 b의 결괏값이 참이면 1을 반환
! : 논리부정(NOT)
a ! b : a의 결괏값이 참이면 거짓을 반환, 거짓이면 참을 반환
7.삼항연산자
a ? b : c;
a의 결괏값이 참이면 b실행문이 동작, 거짓이면 c실행문이 동작.
(10 < 5) ? cout << "10이 5보다 크다." : cout << "10이 5보다 작다.";
cout << endl;
(10 > 5) ? cout << "10이 5보다 크다." : cout << "10이 5보다 작다.";
cout << endl;
8. 난수 (랜덤값)
rand(); // 0 ~ 32767 사이의 랜덤 한 값 반환된다.
숙제 : rand값의 데이터는 몇 바이트인가? 4
함수 내부에 seed값이 있어서 이 값에 의해서 리턴값이 정해진다.
기본적으로 seed : 1로 세팅되어 있다.
srand(time(NULL)); <- 이거 쓰면 seed 값이 바뀌어서 rand() 값이 변한다.
실습 1. 3 ~ 7 사이의 랜덤 한 숫자를 출력하는 프로그램을 작성하자.
(3,7 포함)
정답 ↓
// seed 값이 1 이므로
srand(time(null))
cout << (rand()%5+3) << endl; // 이유 : 3~7에 값이 필요한데 5로 %로 하면 몫이 01234가 끝이므로 여기에 최소값이 3을 더해준다.
실습2. 가장 작은 값과 큰 값을 입력받아서, 그 사이의 임의의 값을 출력하는 프로그램을 작성하자.
정답 ↓
int max_n;
int min_n;
cout << max_n << endl;
cin >> max_n; // 최대값
cout << min_n << endl;
cin >> min_n; // 최소값 갯수 최소값
↓ ↓
cout << min_n << "과" << max_n << "사이의 값은 :" << ran()%((max_n-min_n)+1)+min_n << "이다.
실습3. 프로그램을 실행하면 내부적으로 1~10 사이의 숫자가 정답으로 정해진다.
정답
↓
seed 값이 1이므로 srand(time(NULL)) 꼭쓰자
srand(time(NULL))
int random = rand()%9+1 // 1~9까지 랜덤수
int input;
cout << "숫자를 입력해주세요" << endl;
cin >> input;
input == random ? cout << " true 입니다" : cout << "false 입니다." //삼향연산자 이거 너무 어렵 하지만 연습하자!!
cout << endl;
'C++' 카테고리의 다른 글
202204_15 c++ 구조체 (0) | 2022.04.15 |
---|---|
20220414_게임을 만들어보자! (0) | 2022.04.14 |
20220413_배운것~~~! (0) | 2022.04.13 |
20220412_ c++ 조건문 반복문 분기문 (0) | 2022.04.12 |
(20220405~20220406)_c++ 문법 (0) | 2022.04.07 |