//연산자의 의미
연산자는 피연산자와 결합하여 어떤 값이 되거나, 어떤 현상을 일으킨다.


//연산자의 대분류 : 피연산자에 영향을 주느냐 주지 않느냐, 그 자체가 하나의 값이 될 수 있느냐 없느냐, 즉 크게는 3가지로 나뉜다.

결합된 식이 어떤 값을 나타내는 연산자를 결합형 연산자, 피연산자에 영향을 주는 연산자를 촉매형 연산자라 한다. (!?)
(그냥 내가 비유한 작명이다.)
결합형이면서도 촉매형인 경우가 대입연산자... 인가?


// 연산자의 종류 [기본적인 연산자라 할 수 있겠다. 키워드를 제외하고 라이브러리 객체를 제외한, 그리고 기타 등등을 제외한.]
1. 대입연산자
2. 관계연산자, 논리연산자
3. 비트 단위 연산자
4. 쉬프트 연산자
5. 사칙연산자

// 연산자의 결합 우선 순위
부록을 봐라.


// 비트 단위 연산자
AND : &             OR : |             XOR : ^             NOT : ~
(두 개의 피연산자를 요구하는 비트 단위 연산에서 두 개의 피연산자는 같은 비트수를 가져야 한다. 당연한 이야기이다.)

이항 비트 연산자의 경우, 같은 위치의 비트들을 각각 비교한다. 
AND는 곱의 결과와 같다.[앤드]
OR은 둘 다 0인 위치는 0, 그렇지 않은 위치는 1이다.[오알]
XOR은 값이 서로 같은 위치는 0, 값이 서로 다른 위치는 1이다. [엑스오알]
NOT은 1은 0, 0은 1이다.[낫]
위의 개념들을 각각 하나의 유개념(이미 존재하는 개념, 개념의 단위, ...)으로 숙지하도록 하자. 컴퓨터에서 그 만큼 중요한 것들일 것이다.

// 쉬프트 연산자
피연산자의 오른쪽에 '>>' 또는 '<<'를 붙이고 그 오른쪽에 수를 덧붙인다.
피연산자의 비트들에 들어있는 값들은 그 수만큼 옆으로 이동한다.
비트열의 끝 칸을 지나면 반대편 끝 칸으로 이동한다.
'>>'일 경우 오른쪽, '<<'일 경우 왼쪽으로 이동한다.
쉬프트 연산자는 피연산자에 영향을 주지 않는다.

'X << N'는 X를 왼쪽으로 N번 쉬프트한 결과를 나타낸다.
'X >> N'는 X를 오른쪽으로 N번 쉬프트한 결과를 나타낸다.
'1번 쉬프트한다' : 모든 비트들에 들어있는 값들을 어떤 방향으로 한 비트 간격씩 이동시킨다. 옮길 비트 공간이 남지 않은 경우 값이 비게 될 자리로 옮긴다.

(두 번 설명하였다)
Posted by 망고스파게티 :


명시적인 형변환

1. 연산자와의 결합을 통한 새로운 임시 변수를 일시적으로 생성함
2. 대상 변수의 타입을 변화시킴

1의 경우

'(type)name' 라는 임시변수를 사용하면 된다.
괄호 안의 것이 타입이고, name이 가진 값을 담아 가지게 된다.

2의 경우.

아직 모름. 무슨 _cast ... 하는 것 같던데 뇌자극에서는 아직 안나옴.

묵시적인 형변환

대입연산자를 이용한다.
타입이 다른 두 변수를 피연산자로 하여 대입연산을 하게 되면, 오른쪽에 있는 것의 정보 부분(값)이 왼쪽에 있는 변수로 들어가게 되면서,
똑같은 값을 가지지만 타입이 다른 변수가 생겨나게 되는 셈이다.
이를 보고 묵시적인 형변환이라 한다.
Posted by 망고스파게티 :

정수 타입 (6개)
short int  (2 bytes)
int (4 bytes)
long int (4 bytes)
unsigned ~ (~의 크기와 같다)
int는 자연스러운 크기(운영체제의 처리 단위)에 맞게 할당된다. 32비트(=4바이트)의 경우 4바이트가 할당되는 것이다. 이 노트북(sensRF410)처럼.

long int와 int의 차이는??

sizeof() 의 괄호 안에 타입을 기입하거나 변수의 이름을 기입하면 그것은 그 크기를 나타내게 된다.


실수 타입
float
double
long double

문자 타입
char

아스키 코드, 작은 따옴표
문자를 작은따옴표로 둘러싸게 되면 그것은 어떤 수치가 되는데, 이 문자와 수치 간의 대응관계를 정리한 것이 아스키 코드이다.
그러한 수치를, 문자의 아스키코드값이라 한다.

문자형 변수에는 아스키코드값이 저장된다. 그리고 그 변수는 자신의 안에 담긴 내용을 내보낼 일이 있을 경우에, 그에 대응하는 문자로 내보낸다.

bool 타입
bool에 대입되는 true와 false는 각각 1과 0이다.
Posted by 망고스파게티 :

기본적인 규칙은 다음과 같다.

*고유해야 한다.
이게 무슨 말이냐 하니, 어떤 영역 내에 현재 존재하고 있는 다른 변수들의 이름과 겹치면 안된다는 것이다.
*키워드는 사용할 수 없다.
말 그대로 키워드는 변수의 이름으로 사용할 수 없다.
부가적 규칙들을 보면 다음과 같다.
 1. 맨 앞에 숫자가 올 수 없다.  2. 영어대소문자와 숫자와 언더스코어로만 구성할 수 있다.

키워드들을 소개하겠다.
asm auto bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline nt long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typename union unsigned using virtual void volatile wchar_t while

(나중에 클래스 등을 하다보면 겉보기엔 변수명이 같은 경우에도, 사실은 다르다는 것을 알 수 있을 것이다.
'동일한 변수명을 허용하는 경우도 있다'라는 개소리는 하지 말길 바란다. 숨겨진 변수명이라 할 수 있는 경우이다.)

Posted by 망고스파게티 :

0부 : 각종 기호, 인터페이스
 1, 2, 3장.

1부 : 콘솔 응용 프로그램 내에서의 프로그래밍
 1장 : 변수
 2장 : 연산자
 3장 : 제어문
 4장 : 배열 및 포인터
 5장 : 함수
 6장 : 구조체 및 클래스
Posted by 망고스파게티 :


1장. 변수


 1절. 변수와 대입연산자.

변수란 정보를 담는 상자라고 봐도 무방하다.
유저는 그 상자의 크기와 재질(종류)을 결정해야하고, 또 그에 부합하는 정보만을 담을 수 있다.
변수란, 이름에 대응되어 있는 하나의 방(공간)이다.

변수의 선언이란, 위에서 말한 변수라는 존재를 만들어내는 것이다.
다음과 같이 작성하면 type이라는 타입과 name이라는 이름을 가진 변수가 하나 생성된다.

type name;

대입연산자는 '='이며 그 왼쪽에 있는 변수에 그 오른쪽에 있는 것의 정보 부분을 담는다(넣는다).

변수의 선언과 대입은 다음과 같이 한꺼번에 될 수도 있다.(코드 축약)

type name = value;

(위의 식은 선언을 한 뒤 그 변수에 값을 대입한 코드와 완전히 똑같은 것이다.)

그럼 위의 식을 토대로 명칭(부르는 이름)들을 정의내리겠다.

'type' 이라고 적힌 부분은, '변수의 타입'이라 한다.

'name' 이라고 적힌 부분은, '변수의 이름'이라 한다.

'value' 라고 적힌 부분은, '변수의 값'이라 한다. (그것이 수치가 아니더라도 변수에 담겨있는 정보를 변수의 값이라 한다. 게다가 실제로 그것들이 모두 숫자로 이뤄져 있기 때문에 틀린 말은 아니다.)

변수란 변수의 값이 저장되는 공간을 말한다.

변수의 이름이란 변수와 대응되는 하나의 이름표다.

변수의 타입이란 변수에 저장할 수 있는 변수의 값의 종류다.

다음과 같이, 변수의 선언은 타입이 같은 여러 개를 한꺼번에 할 수 있다. (코드 축약)
type name1, name2, ... nameN;
그리고 초기화하고 싶은 각각의 변수에 대입 연산을 하여 초기화를 할 수도 있다.

예를 들어 nameX와 nameY을 초기화 하고 싶으면, type name1, ..., nameX = value1, ..., nameY = value2, ..., nameN; 와 같이 하면 된다.

Posted by 망고스파게티 :



/* 1장 기호 */

/*
화이트스페이스
작은 따옴표, 큰따옴표
세미콜론, 콜론
슬래시, 백슬래시
쩜, 쉼표
플러스, 마이너스, 별표
미만, 초과
왼괄호, 오른괄호 (소괄호가 가장 일반적인 괄호.)
왼중괄호, 오른중괄호
왼대괄호, 오른대괄호
눈썹
앤드
퍼센트

느낌표(펙토리얼)
대입(는)
물결표
언더스코어 (언더바)
세로살 (쉬프트 백슬래시)
*/

/* 2장 콘솔응용프로그램 제작 시 주 사용기능 */
/*
파일(F) 탭
빌드(B) 탭 - 솔루션 빌드(B) F7
디버그(D) 탭 - 디버깅하지 않고 시작(H) Ctrl F5

단축 키는 빌드 ; F7, 실행 Ctrl F5


빌드 : 컴파일을 하고 링크를 하는 것.
-컴파일 : 프로그래밍 언어를 이진코드로 변환하는 것. 코드를 컴파일하는 순서는 아무런 제어가 없을 시 책을 읽는 순서와 똑같다.
-링크 : 실행될 수 있도록 이진코드의 내용에 따라 어떻게 만드는 것.
디버깅 : 오류를 검토하는 것.
디버깅하지 않고 시작 : 실행파일을 실행하는 것.
*/

/* 3장 프로젝트와 하위 폴더 */
/* 프로젝트는 어떤 프로그래밍을 위한 전체 폴더이다.
솔루션은 프로그래밍을 하기 위해 필요한 요소들을 프로젝트 폴더 내에서 불러오는 파일이다.
'소스 파일'에는 cpp파일을, '헤더 파일'에는 말 그대로 헤더파일(h)을, 그리고 '리소스 파일'에는 언어 외적인 요소들을 넣는다.
바로가기 폴더인 '외부 종속성'은 뭔지 모르겠다.  */

'Science > Computer' 카테고리의 다른 글

예정 목차  (0) 2011.03.31
1부 1장 변수/ 1절 - 변수와 대입연산자.  (0) 2011.03.31
if문  (0) 2011.03.24
private 내의 변수에 접근하는 대표적인 방식  (0) 2011.03.24
생성자. / 클래스  (0) 2011.03.24
Posted by 망고스파게티 :

if(){} 처럼 생겼다.
이 때, {}내부의 내용을, ()내부의 값이 0이면 실행하지 않고, 0이 아니면 실행한다.
그리고 비교연산자는,
cout<<(n1==n2)<<endl; 을 통해 확인해본 결과
참이면 1, 거짓이면 0을 리턴한다(가진다).

Posted by 망고스파게티 :
클래스 내의 함수는 그 정의 속에서 같은 클래스 내의 private내에 있는 변수에 접근할 수 있다.

대표적으로는 (가장 단순하게) 그 값을 public에 있는 함수로 리턴하는 것.

클래스 내에서는 원형 선언만 할 수 있기 때문에

클래스 내에서 대입하는 효과를 얻기 위해서는 함수가 필수다.
(함수 내용에서 변수 끼리 대입해도 될 듯)

'Science > Computer' 카테고리의 다른 글

예정 목차  (0) 2011.03.31
1부 1장 변수/ 1절 - 변수와 대입연산자.  (0) 2011.03.31
/* 0부 ; VC++ 인터페이스 */ 참고: 부>장>절  (0) 2011.03.31
if문  (0) 2011.03.24
생성자. / 클래스  (0) 2011.03.24
Posted by 망고스파게티 :
생성자는 클래스 내에 (public, private, protected)
원형을 선언하는데(존재선언)

클래스의 이름을 A라 하면
A(인자의 원형);
으로 작성한다.
Posted by 망고스파게티 :