int iA = 10;
if(iA = 20)
cout << iA; // 20
if문의 조건부에서 위처럼 변수에 값을 대입할 수 있다.
iA = 20을 참으로 인식하며 그 후 출력하는 iA 값도 대입 후 변경된 값을 출력한다.
int iA = 10, iB = 20;
if((iA < iB) || (iA = 200))
cout << iA; // 10;
if((iA > iB) && (iA = 200))
cout << iA; //10;
조건부에 || (or)을 사용할 때 첫번째 식이 참이므로 if문의 조건은 참이다. 두번째 식은 연산하지 않고 넘어간다.
마찬가지로 && (and)를 사용할 때 첫번째 식이 거짓이므로 if 문의 조건은 거짓이다. 두번째 식은 연산하지 않고 넘어간다.
삼항 연산자
분기를 표현할 때 연산자를 사용할 수도 있다.
int iMax = (iNumber > iNumber2) ? iNumber : iNumber2
(조건) ? (참일때 코드) : (거짓일 때 코드)
난수 생성
srand(unsigned(time(NULL)));
int num = rand();
int num2 = rand();
int num3 = rand();
...
rand()함수는 0~32767 사이의 무작위 정수를 반환한다.
그런데 문제는 시스템의 시드표가 있어 프로그램을 실행할 때마다 똑같은 패턴으로 난수를 생성한다.
그래서 srand함수를 사용하는데 매개변수로 정수를 넣어주면 그 값에 맞게 시드표를 바꿔준다.
그런데 항상 수동으로 시드표를 바꿀 수는 없으니 srand의 매개변수로도 무작위 정수를 넣어줘야 하는데
이때 unsigned(time(NULL))을 넣으면 현재 시간을 초로 바꾼 값으로 계속해서 값이 변하므로
예측할 수 없는 난수를 생성할 수 있다.
'Today I Learned' 카테고리의 다른 글
| 23.01.17 - 메모리 (0) | 2023.01.17 |
|---|---|
| 23.01.16 - 디버깅 고급 (0) | 2023.01.17 |
| 23.01.12 - 연산자2, 분기문 (0) | 2023.01.12 |
| 23.01.11 - char, bool , 연산자 (0) | 2023.01.11 |
| 23.01.10 - 메모리, 정수형, 실수형 (0) | 2023.01.10 |