개정 C언어와 C++에서는 참과 거짓의 표현을 위한 키워드 true와 false를 정의 하고 있다. 이러한 true와 false 는 단순 1과 0의 값이 아니라, 그 자체로 의미 있는 데이터이기 때문에 이런 유형의 데이터를 저장하기 위한 자료형이 존재한다. true와 false 데이터는 bool형 데이터라고 하고, 이러한 bool형 데이터를 지원하는 기본 자료형 bool이 존재한다.
다음은 bool 자료형을 이용한 예제를 나타낸 소스이다.
사용자로부터 입력 받는 number 변수에 10이 들어가면 true 값을, 그 외의 값이 들어가면 false 값을 반환 한다.
프로그래머가 정의하는 헤더 파일의 선언이 아닌, 표준 헤더파일의 선언에 대해서 확장자를 생략한다.
자유로운 지역 변수의 선언 – 9번 라인
c언어에서와 같이 중괄호의 첫 부분에 지역 변수들의 선언만을 모아서 선언하는 것이 아닌 자유롭게 소스 코드 중간 중간에 선언이 가능하며, for문 내의 초기문에 해당하는 영역에서도 선언이 가능하다. 이 때 선언된 변수는 for문이 유효한 기간동안 생성되어 있다가 for문이 종료될 때 소멸된다.
std라는 이름 공간(namespace) 의 새로운 개념 – 11번 라인
std라는 이름 공간이 존재하고 그 공간 속에 여러 라이브러리 및 변수들이 존재함.
새로운 연산자( <<, >> ) 와 printf와 scanf를 대체하는 cout과 cin – 11번, 12번 라인
std 라는 이름 공간 내에 존재(std::를 이와 같이 해석)하는 cout과 cin 요소들에 각각 <<와 >> 연산자를 사용하여 연 이은 출력 및 입력으로 기존 c언어의 printf와 scanf를 대체한다
다음은 C++에서 C언어의 입 출력 함수를 대체하는 요소들을 정리한 표이다.
endl 연산자 – 16번 라인
마찬가지로 std 이름 공간 속에 존재하는 endl 요소를 출력하여 개행의 효과를 낸다.
위와 같이 문자 배열에 문자열을 입력 받을 때에도 std::cin을 이용하여 입력 받는다. 다음은 그 결과이다.
결과에서 알 수 있듯이 std::cin도 scanf와 마찬가지로 공백을 기준으로 입력을 구분하기 때문에 첫 공백 전인hello까지만 입력으로 들어간 것을 확인할 수 있다.
c언어에서 연산에 사용되는 모든 값은 변수 혹은 상수 등의 형태로 메모리 상에 저장된 후, 연산이 진행됨. (연산이라 함은 단순 사칙연산 뿐만 아니라, 출력, 입력 등도 포함)
위와 같은 예에서 1과 1은 메모리 상에 상수의 형태로 저장된 후, 그 저장된 메모리를 이용하여 연산을 진행 위와 같은 경우에는 값이 고정된 상수이기 때문에 다른 라인에서 값의 변경이 불가능함. -> 변수 개념으로 해결
변수
변수란? 값을 저장할 수 있는 메모리 공간에 붙은 이름, 혹은 메모리 공간 그 자체를 나타낸다.
이러한 변수라는 개념을 이용하여 변수에 값을 저장하고 그 값을 이용하여 연산을 진행한다. 다만, 상수와 다른 점은 변수가 선언된 아래 라인에서 변수가 지는 값을 변경하고, 변경된 값을 토대로 재연산이 가능하다는 점.
먼저, 변수의 선언이다.
자료형 + 변수의 이름
위와 같은 형태로 변수의 선언이 이루어진다. 여기서 자료형에 대한 기재는 내가 생성할 변수에 어떤 타입(Type)의 값이 올 것인지를 컴파일러에게 명시해주는 것이고, 변수의 이름에 대한 기재는 말 그대로 메모리 공간에 붙여줄 이름을 명시해주는 것이다.
자료형의 종류와 변수의 이름을 지을 때의 명명 규칙에 대해 아래에 기재
<자료형>
<명명 규칙>
다음은 변수의 선언 및 초기화이다.
6번 줄부터 9번 줄까지 총 5개의 변수가 선언되었는데, 각각 여러 문법적인 요소를 지닌다. line 7에서는 정수형 자료형으로 변수를 선언하였고, 선언함과 동시에 2라는 값을 대입 연산자(=, 대입)를 통하여 초기화를 시켜주었다. 이를 ‘선언과 동시에 초기화 한다’ 라고 표현한다. 그리고 line 8에서는 선언과 동시에 초기화를 하되, 콤마 연산자( , )를 통하여 정수형 변수 num3과 num4를 한번에 선언하고 동시에 초기화를 진행한다. 또한 line 6에서는 num1을 선언만 하고 초기화는 행하지 않았으나 line 11에서 첫 대입이므로 초기화가 이루어졌고, 그 이후 line 12에서 일반 대입이 이루어졌다. 그리고 마지막 line 9에서는 선언만 진행하고 초기화가 이루어지지 않았는데 이런 경우에는 num4의 메모리 공간에는 쓰레기 값이 자동으로 채워진다. 사실 채워지는 것이 아니라 해당 메모리 공간에 원래 존재하고 있던 어떤 값이 보여지는 것이다.
변수 선언 시 주의 사항 : 중괄호 내에 변수를 선언할 경우에는 중괄호의 앞부분에 변수의 선언을 위치시킨다.
연산자
키보드로부터 값을 입력 받기
프로그램이 번역된 후 실행하는 중에 값을 변수에 저장할 수 있는 방법.
scanf 함수에서 첫 번째 인자, 큰 따옴표 사이의 Format으로 입력을 받는데, 나타낸 서식 문자 순서대로 이후 인자들에 차례로 값이 저장된다. %c, %d, %f, %lf 는 변수 명 앞에 &를 붙인다. 포인터와 관련된 이야기.
scanf 함수는 스페이스, 엔터 등의 공백으로 입력과 입력을 구분 지으며, 첫 번째 인자로 주어진 형식으로 입력을 받는다. 형식을 지키며 입력하라는 말이다.