블로그 이미지
이태원에서 사는 다섯식구의 무직 가장. 흰둥에미

카테고리

분류 전체보기 (184)
Itaewon (2)
ryu's?? (1)
20121210이전 (20)
20130827이전 (147)
soo'study (13)
Total35,270
Today14
Yesterday4

'c++'에 해당되는 글 19건

  1. 2013.01.13 열혈강의 C++ 언어본색 1장 - 3장 정리. (1)
  2. 2013.01.10 항목 53 - 55 (2)
  3. 2013.01.10 항목 49 - 52
  4. 2013.01.09 항목 46 - 48
  5. 2013.01.09 항목 41 - 45 (1)
  6. 2013.01.08 항목 36 - 40
  7. 2013.01.08 항목 32 - 35
  8. 2013.01.03 항목 29 - 31
  9. 2012.12.28 조건문, 선택문
  10. 2012.12.23 c/c++ 연산자 정리

1장. C++ 시작하기

 - C++이란

 - 실습을 위한 준비 - 편집기, 컴파일러, 링커와 로더

    visual studio는 위를 모두 제공하는 IDE(Intergrated Develop Environment)

 - 간단한 프로그램 작성하기 - Hello World...


2장. 자료형과 연산자

 - 변수와 상수

    변수 - 데이터가 저장된 주 기억장치의 특정 위치를 의미.

              영문 소문자와 대문자, 숫자, 밑줄(_)만 변수 이름으로 사용 가능.

              숫자는 변수 이름의 첫 글자가 될 수 없다.

              영문은 대/소문자를 구분 한다.

              예약어는 사용할 수 없다.

              변수 이름 길이에는 제한이 없다.(??)

    상수 - 숫자(정수, 실수)와 문자(문자, 문자열)

    변수는 사용하기 전에 반드시 선언되어야 한다.

 - 기본 자료형

   정수형 int                         4바이트(-2147483648~2147483647)

             short int                 2바이트(-32768~32767)

             long int                  4바이트(-2147483648~2147483647)

             unsigned int           4바이트(0~4294967295)

             unsigned short int   2바이트(0~65535)

   실수형 float                      4바이트(3.4 x 10^-38 ~ 3.4 x 10^38)

배정도형 double                   8바이트(1.7 x 10^-308 ~ 1.7 x 10^308)

             long double            8바이트(1.7 x 10^-308 ~ 1.7 x 10^308)

   문자형 char                      1바이트(-128~127)

             unsigned char        1바이트(0~255)

  형변환 - 명시적 형 변환 - (type) 또는 static_cast<type>(...)의 형태로 직접 변환해줌.

              암시적 형 변환 - 컴파일러에 의해 type이 변경됨.

 - 연산자

  C/C++ 의 연산자

 우선 순위

연산자 종류

연산자

연산 방향 
 1

 괄호, 첨자, 구조체(클래스), 한정자

 ( ) [ ] . -> :: 

 L -> R

 2 단항 연산자

 *(포인터) &(레퍼런스) ! - ++ -- + sizeof new delete 

 R -> L
 3 구조체(클래스) 결합연산자 .* ->* 

 L -> R 

 4 승제, 나머지 연산자 * / %

 L -> R

 5 가감 연산자 + -  L -> R
 6 쉬프트 연산자 << >>  L -> R
 7

 비교 연산자

 < <= > >= L -> R
 8

 등가 연산자

 == != L -> R
 9

 비트 연산자(AND)

 &  L -> R
 10 비트 연산자(XOR) ^  L -> R
 11 비트 연산자(OR) |  L -> R
 12 논리 연산자(AND) &&  L -> R

 13

 논리 연산자(OR)

 ||  L -> R
 14

 조건 연산자

 ?: 

 R -> L
 15 대입 연산자

 = *= /= += -= %= <<= >>= &= ^= |= 

 R -> L
 16 나열 연산자 ,  L -> R


연산자와 함께오는 항의 개수에 따라 단항, 이항, 삼항 연산자로 나눌수도 있다.

붉은 색은 c++의 연산자.

출처 - 내 블로그


3장. 조건문, 반복문, 네임스페이스

 - 조건문 if, else if, else

   수행할 내용이 한 문장(;단위)을 넘는다면 반드시 수행할 내용에 범위를 지정( 중괄호 { } )해야 한다.

if (조건)

{

...

}

else if (또 다른 조건)

{

...

}

else if (또 다른 조건)

...

else

{

}


if 와 else if의 조건이 참인 구문이 실행되며,

모두 거짓일 때, else의 구문이 실행된다.

출처 - 내 블로그


 - 상수조건문 switch~case

   조건 결과가 상수 값으로 나열될 때 사용하면 편리.

   break 문을 이용해 switch~case명령의 범위를 벗어나게 할 수 있음.

switch (정수타입의 변수)

{

case a:

{

...

}

break;

case b:

...

...

default:

{

...

}

}

switch 문에서 분기되는 값에 따른 case 문으로 바로 이동.

case 문으로 이동 후, switch문의 블록 끝까지 실행되며, break문을 이용해 적당히 끊어줄 수 있다.

default:는 case 문의 값과 매치되는 값이 없을 때, 실행되는 부분임.

출처 - 내 블로그

 - 반복문

    1. for문

    for (초기화; 조건문; 증감문)

         반복할 내용;

    실행 순서 - 초기화->(조건문->반복할 내용->증감문)반복

    초기화, 조건문, 증감문은 생략도 가능.

    2. while문

    while (조건문)

        반복할 내용;

    3. do~while문

    do{

        반복할 내용;

    } while (조건문);

    while문과 달리 무조건 한번은 실행된 후, 조건을 평가.

    4. continue문

    반복 범위 처음으로 실행 제어를 이동하게 함.


 - 코드 범위와 네임스페이스

    1. 범위 표시 중괄호( { } )

    특정 범위 내에서 선언된 변수등은 범위 내에서만 사용가능함.

    현재 범위에서 상위 범위에서 선언된 변수와 동일한 변수를 선언하면, 현재 범위에서 선언된 변수가 우선 된다.

    2. 네임스페이스의 작성과 사용

    작성 -

    namespace 이름

    {

         선언 내용;

    }

    사용 - 

    (1)네임스페이스이름::멤버

    (2)using namespace 네임스페이스이름;

        멤버 사용.


신고

'20130827이전 > C&C++' 카테고리의 다른 글

셔플 알고리즘  (1) 2013.01.28
포인터  (2) 2013.01.23
열혈강의 C++ 언어본색 1장 - 3장 정리.  (1) 2013.01.13
디버깅  (0) 2013.01.05
조건문, 선택문  (0) 2012.12.28
c/c++ 연산자 정리  (0) 2012.12.23
Posted by 흰둥에미

항목 53 - 55

20130827이전/EC++ / 2013.01.10 02:27

misc..


항목 53. 컴파일러 경고를 지나치지 말자.

    - 컴파일러 경고는 컴파일러 의존적이므로, 컴파일러에 따라 천차만별.

    - 최고 경고 수준으로도 경고를 발생시키지 않는 쪽으로 코드를 만들자.


항목 54. tr1을 포함한 표준 라이브러리 구성요소와 편안한 친구가 되자.

    - 현재 C++0x를 지원하는 컴파일러가 나오고들 있다. tr1라이브러리의 기능들이 대부분 포함된걸로 안다.

       구 버전의 msvs는 서비스팩을 설치하고, 2012는 포함되어 있던걸로 안다.


항목 55. 부스트를 늘 여러분 가까이에.

    - 항목 54의 내용으로 퉁. boost.org에 자주 놀러가자.

신고

'20130827이전 > EC++' 카테고리의 다른 글

항목 53 - 55  (2) 2013.01.10
항목 49 - 52  (0) 2013.01.10
항목 46 - 48  (0) 2013.01.09
항목 41 - 45  (1) 2013.01.09
항목 36 - 40  (0) 2013.01.08
항목 32 - 35  (0) 2013.01.08
Posted by 흰둥에미

항목 49 - 52

20130827이전/EC++ / 2013.01.10 02:22

메모리 생성과 해제..


항목 49. new 처리자의 동작 원리를 제대로 이해하자

    - 메모리 할당 요청을 operator new 함수가 맞추어 주지 못할 경우에 operator new 함수는 예외를 던짐

       예외를 던지기 전에 에러 처리 함수를 우선적으로 호출하도록 되어 있는데,

       이 에러 처리 함수를 가리켜 new 처리자(new-handler)라고 함.

    - 표준 라이브러리의 set_new_handler로 new 처리자를 지정할 수 있음.

    - new 처리자 함수가 프로그램의 동작에 좋은 영향을 미치기 위해 꼭 하나는 해주어야 할 기능들?

       1. 사용할 수 있는 메모리를 더 많이 확보

       2. 다른 new 처리자를 설치

       3. new 처리자의 설치를 제거

       4. 예외를 던짐.

       5. 복귀하지 않고, 프로그램 종료.

    - 예외 불가 new (new (std::nothrow) CLASS;)는 영향력이 제한.

       메모리 할당 자체에만 적용되기에, 이후 호출되는 생성자에서 얼마든지 예외 발생 가능.


항목 50. new 및 delete를 언제 바꿔야 좋은 소리를 들을지를 파악해 두자.

    - operator new와 operator delete를 바꾸고 싶은 대표적 잉ㅍ.

       1. 잘못된 힙 사용을 탐지하기 위해

       2. 효율을 향상시키기 위해

          (1) 할당 및 해제 속력을 높이기 위해

          (2) 기본 메모리 관리자의 공간 오버헤드를 줄이기 위해

          (3) 적당히 타협한 기본 할당자의 바이트 정렬 동작을 보장하기 위해

          (4) 임의의 관계를 맺고 있는 객체들을 한 군데에 나란히 모아놓기 위해

       3. 동적 할당 메모리의 실제 사용에 관한 통계 정보를 수집하기 위해

       4. 그때그때 원하는 동작을 수행하도록 하기 위해


항목 51. new 및 delete를 작성할 때 따라야 할 기존의 관례를 잘 알아 두자.

    - 관례적으로, operator new 함수는 메모리 할당을 반복해서 시도하는 무한 루프를 가져야 하고,

       메모리 할당 요구를 만족시킬 수 없을 때 new 처리자를 호출해야 하며, 0바이트에 대한 대책도 있어야 합니다.

       클래스 전용 버전은 자신이 할당하기로 예정된 크기보다 더큰(틀린) 메모리 블록에 대한 요구도 처리해야 합니다.

    - operator delete 함수는 널 포인터가 들어왔을 때 아무 일도 하지 않아야 합니다.

       클래스 전용 버전의 경우에는 예정 크기보다 더 큰 블록을 처리해야 합니다.


항목 52. 위치지정 new를 작성한다면 위치지정 delete도 같이 준비하자.

    - 위치지정 new : 메모리 사이즈 외에, 메모리를 할당할 위치의 포인터를 추가 인자로 받는 operator에서 유래

                             추가 인자가 있는 operator new를 위치지정 new로 일컫기도 함.

    - operator new 함수의 위치지정 버전을 만들 때는, 이 함수와 짝을 이루는 위치지정 버전의 operator delete 함수도 꼭 만들어라.

    - new 및 delete의 위치지정 버전을 선언할 때는, 이들의 표준 버전이 가려지는 일(의도하지 않음)이 생기지 않도록 주의해 주세요.


신고

'20130827이전 > EC++' 카테고리의 다른 글

항목 53 - 55  (2) 2013.01.10
항목 49 - 52  (0) 2013.01.10
항목 46 - 48  (0) 2013.01.09
항목 41 - 45  (1) 2013.01.09
항목 36 - 40  (0) 2013.01.08
항목 32 - 35  (0) 2013.01.08
Posted by 흰둥에미

항목 46 - 48

20130827이전/EC++ / 2013.01.09 16:50

항목 46. 타입 변환이 바람직할 경우에는 비멤버 함수를 클래스 템플릿안엥 정의해 두자.

     - 모든 매개변수에 대해 암시적 타입 변환을 지원하는 템플릿과 관계가 있는 함수를 제공하는 클래스 템플릿을 만들려고 한다면,

       이런 함수는 클래스 템플릿 안에 프렌드 함수로서 정의합시다.


항목 47. 타입에 대한 정보가 필요하다면 특성정보 클래스를 사용하자.

     - traits

     - 특성정보 클래스는 컴파일 도중에 사용할 수 있는 타입 관련 정보를 만들어냅니다.

        또한 특성정보 클래스는 템플릿 및 템플릿 특수화 버전을 사용하여 구현합니다.

     - 함수 오버로딩 기법과 결합하여 특성정보 클래스를 사용하면,

        컴파일 타입에 결정되는 타입별 if... else 점검문을 구사할 수 있습니다.


항목 48. 템플릿 메타프로그래밍, 하지 않겠는가?

     - c++ 컴파일러가 실행시키는, c++로 만들어진 프로그램

     - 재귀 템플릿 인스턴스화

     - 치수 단위의 정확성 확인, 행렬 연산의 최적화(표현식 템플릿), 맞춤식 디자인 패턴 구현의 생성(정책기반설계, 생성식프로그래밍)

     - 템플릿 메타프로그래밍은 기존 작업을 런타임에서 컴파일 타임으로 전환하는 효과를 냅니다.

        따라서 TMP를 쓰면 선행 에러 탐지와 높은 런타임 효율을 손에 거머쥘 수 있습니다.

     - TMP는 정책 선택의 조합에 기반하여 사용자 정의 코드를 생성하는 데 쓸 수 있으며,

        또한 특정 타입에 대해 부적절한 코드가 만들어지는 것을 막는 데도 쓸 수 있습니다.


신고

'20130827이전 > EC++' 카테고리의 다른 글

항목 53 - 55  (2) 2013.01.10
항목 49 - 52  (0) 2013.01.10
항목 46 - 48  (0) 2013.01.09
항목 41 - 45  (1) 2013.01.09
항목 36 - 40  (0) 2013.01.08
항목 32 - 35  (0) 2013.01.08
Posted by 흰둥에미

항목 41 - 45

20130827이전/EC++ / 2013.01.09 04:50

템플릿과 일반화 프로그래밍....


항목 41. 템플릿 프로그래밍의 천릿길도 암시적 인터페이스와 컴파일 타임 다형성부터..

      - 클래스 및 템플릿은 모두 인터페이스와 다형성을 지원합니다.

      - 클래스에서, 인터페이스는 명시적이며 함수의 시그너처를 중심으로 구성되어 있습니다.

         다형성은 프로그램 실행 중에 가상 함수를 통해 나타납니다.

      - 템플릿 매개변수의 경우, 인터페이스는 암시적이며 유효 표현식에 기반을 두어 구성됩니다.

        다형성은 컴파일 중에 템플릿 인스턴스화와 함수 오버로딩 모호성 해결을 통해 나타납니다.

        if (w.size() > 10 && w != someW) ... 에서 조건문의 결과가 bool과 호환만 되면 된다.


항목 42. typename의 두 가지 의미를 제대로 파악하자.

      - 템플릿의 타입 매개변수를 선언할 때는 class와 typename의 뜻이 완전히 똑같다.

      - nested dependent type name에 대해 컴파일러가 타입인지 아닌지 알 방법이 없기에,

         typename C::const_iterator iter(container.begin()); 의 형태로 써야 한다.

         단, 중첩 의존 타입 이름이 기본 클래스의 리스트에 있거나,

         멤버 초기화 리스트 내의 기본 클래스 식별자로 있는 경우는 안붙여줌.


항목 43. 템플릿으로 만들어진 기본 클래스 안의 이름에 접근하는 방법을 알아 두자.

      - template<>

        class A : public B<Special> {....      -> 완전 템플릿 특수화.

      - 위와 같은 완전 템플릿 특수화의 가능성으로 인해 기본 클래스의 함수를 그냥 호출하는 것은 불가능.

      - 방법 1. this->method();

      - 방법 2. using 선언을 이용하여 사용.

      - 방법 3. 기본클래스에 한정자를 붙여 호출(호출되는 함수가 가상 함수인 경우, 가상 함수 바인딩이 무시되므로 비추)


항목 44. 매개변수에 독립적인 코드는 템플릿으로부터 분리시키자.

      - 템플릿 사용으로 인한 코드 비대화를 막기위해..

      - 공통성 및 가변성 분석

      - 템플릿을 사용하면 비슷비슷한 클래스와 함수가 여러 벌 만들어집니다.

         따라서 템플릿 매개변수에 종속되지 않은 템플릿 코드는 비대화의 원인이 됩니다.

      - 비타입 템플릿 매개변수로 생기는 코드 비대화의 경우,

         템플릿 매개변수를 함수 매개변수 혹은 클래스 데이터 멤버로 대체함으로써 비대화를 종종 없앨 수 있습니다.

      - 타입 매개변수로 생기는 코드 비대화의 경우, 동일한 이진 표현구조를 가지고 인스턴스화되는 타입들이

         한 가지 함수 구현을 공유하게 만듦으로서 비대화를 감소시킬 수 있습니다.

항목 45. "호환되는 모든 타입"을 받아들이는 데는 멤버 함수 템플릿이 직방!

      - 생성자를 만들어내는 템플릿을 사용 (일반화 복사 생성자)

      - 멤버 함수 템플릿 - 어떤 클래스의 멤버 함수를 찍어내는 템플릿

      - 호환되는 모든 타입을 받아들이는 멤버 함수를 만들려면 멤버 함수 템플릿을 사용합니다.

      - 일반화된 복사 생성 연산과 일반화된 대입 연산을 위해 멤버 템플릿을 선언했다 하더라도,

         보통의 복사 생성자와 복사 대입 연산자는 여전히 직접 선언해야 합니다.


신고

'20130827이전 > EC++' 카테고리의 다른 글

항목 49 - 52  (0) 2013.01.10
항목 46 - 48  (0) 2013.01.09
항목 41 - 45  (1) 2013.01.09
항목 36 - 40  (0) 2013.01.08
항목 32 - 35  (0) 2013.01.08
항목 29 - 31  (0) 2013.01.03
Posted by 흰둥에미

항목 36 - 40

20130827이전/EC++ / 2013.01.08 15:25

항목 36. 상속받은 비가상 함수를 파생 클래스에서 재정의하는 것은 절대 금물!

       - 비가상 함수는 정적 바인딩으로 묶이고, 가상 함수는 동적 바인딩으로 묶임.

       - 따라서 파생 클래스를 부모 클래스의 포인터에 넣고 비가상 함수 호출시, 부모의 함수가 수행됨.


항목 37. 어떤 함수에 대해서도 상속받은 기본 매개변수 값은 절대로 재정의하지 말자.

       - 가상 함수는 동적으로 바인딩 되지만, 기본 매개변수는 정적으로 바인딩 된다.

       - 항목 36가 비슷한 연유로, 위험.


항목 38. "has a" 혹은 "is implemented in terms of"를 모형화할 때는 객체 합성을 사용하자.

       - A has a B (A is implemented in terms of B) 이면 B는 A의 멤버로...


항목 39. private 상속은 심사숙고해서 구사하자.

       - private 상속이 필요한 경우는, is implemented in terms of(멤버쯤)처럼 사용하면서 비공개 멤버를 접근할 때,

         혹은 가상 함수를 재정의할 경우에 사용하자.

       - private상속보다 public상속에 객체 합성 조합이 더 좋은 이유

          1. 가상 함수의 재정의를 설계차원에서 막을 때

          2. 컴파일 의존성을 최소화하고 싶을 때.

       - private 상속이 유용한 경우 - 공백 기본 클래스 최적화


항목 40. 다중 상속은 심사숙고해서 사용하자.

       - 마름모꼴의 다중 상속에서, 기본은 데이터 멤버를 중복생성 시키지만, 가상 기본 클래스로 만들면 중복생성되지 않는다.

       - 가상 상속을 쓰면 크기, 속도 비용이 늘어나며, 초기화 및 대입 연산의 복잡도가 커짐.

         따라서 가상 기본 클래스에는 데이터를 두지 않는 것이 현실적으로 가장 실용적

       - 다중 상속을 적절하게 사용하는 법은, 인터페이스 클래스로부터 public 상속과 동시에 구현을 돕는 클래스로부터 private 상속


신고

'20130827이전 > EC++' 카테고리의 다른 글

항목 46 - 48  (0) 2013.01.09
항목 41 - 45  (1) 2013.01.09
항목 36 - 40  (0) 2013.01.08
항목 32 - 35  (0) 2013.01.08
항목 29 - 31  (0) 2013.01.03
항목 26 - 28  (0) 2012.12.22
Posted by 흰둥에미

항목 32 - 35

20130827이전/EC++ / 2013.01.08 15:18

항목 32. public 상속 모형은 반드시 "is a..."를 따르도록 만들자.

      - 기본 클래스에 적용되는 모든 것들이 파생 클래스에 그대로 적용되어야 함.


항목 33. 상속된 이름을 숨기는 일은 피하자.

      - 파생 클래스의 이름은 기본 클래스의 이름을 가림, 가려진 이름은 using선언이나, 전달 함수를 이용해 쓸 수 있음.


항목 34. 인터페이스 상속과 구현 상속의 차이를 제대로 파악하고 구별하자.

      - 순수 가상 함수를 선언하는 목적은 파생 클래스에게 함수의 인터페이스만을 물려줌.

      - 단순 가상 함수는 인터페이스 상속과 더불어 기본 구현의 상속도 가능하게 함.

      - 비가상 함수는 인터페이스 상속과 더불어 필수 구현도 상속하게 함.


항목 35. 가상 함수 대신 쓸 것들도 생각해 두는 자세를 시시때때로 길러 두자.

      - 비가상 인터페이스 관용구를 통한 템플릿 메서드 패턴

         (비가상 함수에서 가상 함수를 호출하게 하고, 파생 클래스에서는 그 가상 함수들을 오버라이딩)

      - 함수 포인터를 이용한 strategy pattern, 파생 클래스 생성시 필요한 함수의 포인터를 전달하여, 각각의 동작을 정함.

      - tr1::function을 이용한 strategy pattern, 함수 포인터를 이용한 것과 비슷한 개념으로 융통성이 증가.

      - 고전적인 strategy pattern,

        파생 클래스 생성시 원하는 동작의 함수가 구현된 클래스를 넘기고, 그 클래스의 가상함수를 통해 각자의 동작을 수행.

신고

'20130827이전 > EC++' 카테고리의 다른 글

항목 41 - 45  (1) 2013.01.09
항목 36 - 40  (0) 2013.01.08
항목 32 - 35  (0) 2013.01.08
항목 29 - 31  (0) 2013.01.03
항목 26 - 28  (0) 2012.12.22
항목 22 - 25  (0) 2012.12.22
Posted by 흰둥에미

항목 29 - 31

20130827이전/EC++ / 2013.01.03 17:31

항목 29. 예외 안전성이 확보되는 그날 위해 싸우고 또 싸우자.

          - 자원이 새지 않도록 만든다.

          - 자료구조가 더럽혀지는 것을 허용하지 않는다.

          - 예외 안전성 - 기본적인 보장, 강력한 보장, 예외불가 보장.

          - 어떤 함수가 제공하는 예외 안전성 보장의 강도는, 그 함수가 내부적으로 호출하는 함수들이 제공하는 가장 약한 보장을 넘지

            못함.


항목 30. 인라인 함수는 미주알고주알 따져서 이해해 두자.

          - 인라인 함수는 대체적으로 헤더 파일에 들어 있어야 한다.

          - 루프나 재귀 함수의 경우 인라인화 하지 않음.

          - 함수 포인터를 통해 호출하는 함수는 인라인화 되지 않음.

          - 생성자, 소멸자는 인라인화 되지 않음

          - 작고, 자주 호출되는 함수에 대해서만 인라인화 하자.


항목 31. 파일 사이의 컴파일 의존성을 최대로 줄이자.

          - 헤더에서는 전방선언

          - pimpl 관용구를 사용하자.(Proxy랑 비슷한 느낌이긴 한데..) - 핸들 클래스

          - 추상 기본클래스와 팩토리 함수를 제공하여 사용한다 - 인터페이스 클래스

          - 객체 참조자 및 포인터로 충분한 경우에는 객체를 직접 쓰지 않습니다.

          - 할 수 있으면 클래스 정의 대신 클래스 선언에 최대한 의존하도록 만듭니다.

          - 선언부와 정의부에 대해 별도의 헤더 파일을 제공합니다.


신고

'20130827이전 > EC++' 카테고리의 다른 글

항목 36 - 40  (0) 2013.01.08
항목 32 - 35  (0) 2013.01.08
항목 29 - 31  (0) 2013.01.03
항목 26 - 28  (0) 2012.12.22
항목 22 - 25  (0) 2012.12.22
항목 18 - 21  (0) 2012.12.21
Posted by 흰둥에미

1. 조건문

if (조건)

{

...

}

else if (또 다른 조건)

{

...

}

else if (또 다른 조건)

...

else

{

}


if 와 else if의 조건이 참인 구문이 실행되며,

모두 거짓일 때, else의 구문이 실행된다.


2. 선택문

switch (정수타입의 변수)

{

case a:

{

...

}

break;

case b:

...

...

default:

{

...

}

}

switch 문에서 분기되는 값에 따른 case 문으로 바로 이동.

case 문으로 이동 후, switch문의 블록 끝까지 실행되며, break문을 이용해 적당히 끊어줄 수 있다.

default:는 case 문의 값과 매치되는 값이 없을 때, 실행되는 부분임.

신고

'20130827이전 > C&C++' 카테고리의 다른 글

열혈강의 C++ 언어본색 1장 - 3장 정리.  (1) 2013.01.13
디버깅  (0) 2013.01.05
조건문, 선택문  (0) 2012.12.28
c/c++ 연산자 정리  (0) 2012.12.23
c++ 표준 입력(cin) 의 문제점.  (1) 2012.12.23
2. 진법과 보수  (0) 2012.12.17
Posted by 흰둥에미
TAG C, c++

C/C++ 의 연산자


 우선 순위

연산자 종류

연산자

연산 방향 
 1

 괄호, 첨자, 구조체(클래스), 한정자

 ( ) [ ] . -> :: 

 L -> R

 2  단항 연산자

 *(포인터) &(레퍼런스) ! - ++ -- + sizeof new delete 

 R -> L
 3  구조체(클래스) 결합연산자  .* ->* 

 L -> R 

 4  승제, 나머지 연산자  * / %

 L -> R

 5  가감 연산자  + -   L -> R
 6  쉬프트 연산자  << >>   L -> R
 7

 비교 연산자

 < <= > >=  L -> R
 8

 등가 연산자

 == !=  L -> R
 9

 비트 연산자(AND)

 &   L -> R
 10  비트 연산자(XOR)  ^   L -> R
 11  비트 연산자(OR)  |   L -> R
 12  논리 연산자(AND)  &&   L -> R

 13

 논리 연산자(OR)

 ||   L -> R
 14

 조건 연산자

 ?: 

 R -> L
 15  대입 연산자

 = *= /= += -= %= <<= >>= &= ^= |= 

 R -> L
 16  나열 연산자  ,   L -> R


연산자와 함께오는 항의 개수에 따라 단항, 이항, 삼항 연산자로 나눌수도 있다.

붉은 색은 c++의 연산자.

신고

'20130827이전 > C&C++' 카테고리의 다른 글

디버깅  (0) 2013.01.05
조건문, 선택문  (0) 2012.12.28
c/c++ 연산자 정리  (0) 2012.12.23
c++ 표준 입력(cin) 의 문제점.  (1) 2012.12.23
2. 진법과 보수  (0) 2012.12.17
1. 프로그래밍 기본 및 C 데이터 타입  (0) 2012.12.13
Posted by 흰둥에미
TAG C, c++

최근에 달린 댓글

최근에 받은 트랙백

글 보관함