220407_C++연산

2022. 4. 7. 17:30C++

연산자 = 모든 명령에 필요한 것 

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