Accelerated C++_Chapter02

gyeon·2021년 12월 21일
0

Accelerated C++

목록 보기
4/5

사실... 이번챕터는 반복문에관한 내용이라 새롭게 배우는건 많이 없었다.
하지만, 생각해볼 부분이 있어서 해당부분에 대해 글을 작성.

간략평가법

조건문시, 왼쪽부터 연산하고 해당 조건이 반드시 참인경우 모든 조건문을 검사하지 않는다.
if (조건1 | 조건2 | 조건3 | ...) {...}인 경우, 조건1만 만족하면 그 이후에 것은 검사하지 않는다고 하는데... C로 과제할때는 확인했던거 같은데??

#include <iostream>

int main() {
	char *str = 0x0000;
	int i = 0;

	if (i == 0 || str[0] == '\n') {
		std::cout << "con" << std::endl;
	}
	return 0;
}

=> con이 잘 출력된다... 분명 c과체할때 이게 안되서 때려쳤던 기억이 있는데... c++와서 바꿨나?

카운팅

프로그램이에서 일반적으로 카운팅시 1부터 시작하는게 아니라 0부터 시작한다. 0부터 시작하여 n개를 카운팅한다고 하면, 인덱스는 n-1까지 증가한다. 이를 수학적으로 나타내면 [0, n)이고, 반 개방 범위라고한다.
0부터 시작하게 하여, 비대칭적인 반 개방 범위를 반복문에서 사용시 while(i < n)이나 for(int i = 0; i < n; i++)형태로 표현하게 되는데, 이는 다음과 같은 이점들이 있다.

  • 반복문이 끝났을때, 반복문의 조건에 사용되는 인덱스는 n값이다(깔끔함).
  • <대신 <=를 사용한경우, while(i <= n-1), while(i + 1<= n)같은 형태로 표현될수 있는데, 이는 언더/오버플로우를 유발할수 있다.
  • 반복조건으로 !=를 사용할수 있게 된다.
    -> [0, n-1]인 경우 반복조건을 판단하기 위해 i <= n-1만 사용할수 있지만,
    -> [0, n)인 경우 반복조건을 판단하기 위해 i < n뿐만 아니라 i != n도 사용할수 있다.
    이때, i != n을 사용했을때 이점은 출력값이 명확하게 n번 실행됬다는 것을 알수 있다.

문제

2-10

int main() {
	int k = 0;
    while (k != 10) {
    	using std::cout;
        cout << "*"
        ++k;
    }
    std::cout <<std:;endl;
    return 0;
}

using의 범위에 대해 생각해볼수 있는 문제이다. using이 유효한 범위는 한 중괄호 내부에서이다. 따라서 반복문이 한 번 끝날때마 using은 무효가되고, 다시 반복문이 시작되면서 using std::cout;이 이 동작하여 std::없이 cout을 사용할수 있게 된다.

profile
백엔드와 서버 in 42Seoul

0개의 댓글