bool 자료형



자바, 파이썬등 요즘 나오는 프로그램 언어에는 bool 형이 존재한다.

하지만 C에서는 bool형이 없고 C++에서 등장한다.

bool형은 참,거짓 두 가지만 저장하는 값이다.



bool 자료형

 

사용법은 아래와 같다.

 bool isContinue;

 isContinue = true;  //true 값은 1이다.

 isContinue = false; //false 값은 0이다.


bool 형은 오르지 true나 false 두 가지 값만 가진다.

true는 참이며 false는 거짓이다.

if, while 조건문에서 true면 참이 되어 해당 조건문에 해당하는 실행문이 수행된다.


[전체 예제]


#include <iostream>

using namespace std;


int main(int argc, char** argv) 

{

    bool isContinue = true;

    int cnt = 0;


    while( isContinue )

    {

          cout<<cnt<<endl;

          cnt++;

          if( cnt == 5 )

          {

               isContinue = false;

               cout<<"while문 종료"<<endl;

          }          

    }

    cout<<"프로그램 종료"<<endl;

    return 0;

}


[결과]

0

1

2

3

4

while문 종료

프로그램 종료





반응형

'프로그램 > C++' 카테고리의 다른 글

[C++] 참조자(Reference) 사용법  (0) 2017.12.30
[C++] namespace 사용법  (0) 2017.12.27
[C++]인라인 함수 사용법  (0) 2017.12.26
[C++]함수 매개변수 디폴트 값  (0) 2017.12.25
[C++]함수 오버로딩 (Function Overloading)  (0) 2016.12.03

이름공간(namespace)



이름과 매개변수가 같은 두 개 함수가 있다.

이름과 매개변수가 같기 때문에 컴파일 할 때 오류가 발생한다.

중복되는 이름이 적으면 함수명을 바꿔주는 방법이 있다.

하지만 일일히 바꿔주기 힘들 정도로 많다면 어떻게 할까?

바로 namespace를 사용하여 간단히 바꿀 수 있다.



namespace 이해하기

 

다음과 같이 두개의 함수가 있다.

 void printMessage()

 {

     std::cout<<"내가 정의한 메시지"<<std::endl;

 }


 void printMessage()

 {

     std::cout<<"친구가 정의한 메시지"<<std::endl;

 }


함수 명과 매개변수까지 동일 하여 컴파일 시 문제가 된다.

이 때 namespace를 사용해 해결해 보자.


[namespace 사용법]

 namespace Me

 {

 void printMessage()

 {

     std::cout<<"내가 정의한 메시지"<<std::endl;

 }

  }


 namespace Friend

 {

 void printMessage()

 {

     std::cout<<"친구가 정의한 메시지"<<std::endl;

 }

 }


이제 컴파일은 문제가 되지 않지만 두 함수를 호출은 어떻게 할까?


[각 함수 호출 방법]

 Me::printMessage();


namespace 명::함수 명


[전체 예제]


#include <iostream>


namespace Me

{

void printMessage()

{

     std::cout<<"내가 정의한 메시지"<<std::endl;

}

}


namespace Friend

{

void printMessage()

{

     std::cout<<"친구가 정의한 메시지"<<std::endl;

}

}


int main(int argc, char** argv) 

{

  Me::printMessage();

    return 0;

}


[결과]

내가 정의한 메시지




using을 이용하여 namespace를 명시

 

메시지를 출력하기 위해 std::cout 함수를 사용한다.

여기서 std는 namespace 이며 cout은 함수이다.

std::cout

std::endl 

매번 std::을 코딩하기 번거롭다.

이를 해결 하기 위해 using을 사용해 std::를 제거해 보자.


[사용법]

 using std::cout;

 using std::endl;



[전체 예제]


#include <iostream>


using std::cout;

using std::endl;


int main(int argc, char** argv) 

{

  cout<<"hello"<<endl;

    return 0;

}


[결과]

hello


위에 예제에서 cout, endl을 호출 할 때 std::가 없이 호출 되었음을 확인 할 수 있다.





반응형

'프로그램 > C++' 카테고리의 다른 글

[C++] 참조자(Reference) 사용법  (0) 2017.12.30
[C++] bool 자료형  (0) 2017.12.29
[C++]인라인 함수 사용법  (0) 2017.12.26
[C++]함수 매개변수 디폴트 값  (0) 2017.12.25
[C++]함수 오버로딩 (Function Overloading)  (0) 2016.12.03

인라인(inline) 함수



인라인 함수는 C에서 매크로 함수와 비슷한 기능을 한다.

인라인함수 호출시 해당 문장이 인라인 함수 몸체와 대체한다.

이 때 "함수가 인라인화 되었다."고 표현한다.

매크로 함수의 장점인 일반 함수에 비해 실행 속도가 빠르다.

인라인 함수 역시 이러한 장점을 가지고 있다.

하지만 컴파일러가 인라인화가 성능을 저하시킨다고 판단하면

인라인 키워드를 무시한다.



인라인 함수 이해하기

 

다음과 같은 인라인 함수가 있다.

 inline int SUM( int a, int b )

 {

     return a + b ;

 }


아래와 같이 인라인 함수를 호출 한다.


 std::cout<<SUM(1,2)<<std::endl;


컴파일이 인라인화 한다. 

인라인 함수 호출 부분이 인라인 함수 몸체로 바뀐다.


[인라인화]

std::cout<<1+2<<std::endl;



호출 문장 SUM(1,2) 이 1+2 된다.



 인라인 함수 예제

    

[전체 예제]


#include <iostream>


inline int sum( int a , int b  )

{

    return a + b ;

}


int main(int argc, char** argv) 

{

    int result = 0 ;

    result = sum( 6, 3 );

    std::cout<<result<<std::endl;


    return 0;

}


[결과]

 9




반응형

'프로그램 > C++' 카테고리의 다른 글

[C++] bool 자료형  (0) 2017.12.29
[C++] namespace 사용법  (0) 2017.12.27
[C++]함수 매개변수 디폴트 값  (0) 2017.12.25
[C++]함수 오버로딩 (Function Overloading)  (0) 2016.12.03
[C++] cout,cin 사용법  (0) 2016.11.15

디폴트 값



함수를 호출 할 때 필요한 인자 값을 넣어주지 않으면 어떻게 될까?

컴파일 할 때 인자 값이 없다며 에러를 출력한다.

하지만 함수를 정의 할 때 디폴트 값을 설정 후 위와같이 컴파일 하면 에러가 발생되지 않는다.

이렇게 인자 값을 넣지 않고 함수를 호출 할 수 있는 디폴트 값에 대해 알아보자.



디폴트 값 설정 하기


사용방법은 다음과 같다.

 int sum( int a = 1, int b = 2 )

 {

     return a + b ;

 }


함수 정의 할 때 매개 변수 a, b에 각각 1,2를 초기 값으로 설정해 줬다.

이것이 디폴트 값이라 한다.


아래와 같이 각각 호출 때 결과 값을 예측 해보자.


int result = 0 ;


result = sum();

std::cout<<result<<std::endl;


result = sum( 8 );

std::cout<<result<<std::endl;


result = sum( 6, 3 );

std::cout<<result<<std::endl;


[결과]

 3

 10

 9

result = sum()

-> 두 개 인자 모두 입력되지 않아 모두 디폴트 값으로 설정이 된다.

    디폴트 값이 1,2 이며 두개 합은 3이다.


result = sum(8)

-> 첫번째 인자가 8로 입력되며 두번째 인자는 디폴트 값으로 설정이 된다.

    첫번째 인자 값인 8과 두번째 디폴트 값인 2가 더해져 10이 된다.


result = sum( 6, 3 )

-> 두 개 인자 모두 입력이 되었으며 두 합은 9이다.





 부분 적 디폴트 값 설정 하기

    

함수 매개변수를 부분적으로 선언 가능하다.

 int sum1( int a , int b = 2 int c = 3 )

 {

     return a + b + c ;

 }

 int sum2( int , int b, int c = 3 )

 {

     return a + b + c ;

 }


sum1, sum2 함수에 각각 일부만 디폴트 값을 선언했다.

sum1 함수 후출 할 때 첫 번째 인자를 필수로 넣어야 한다.

sum2 함수 후출 할 때 첫 번째, 두 번째 인자를 필수로 넣어야 한다.


여기서 주의 할 점은 아래와 같이 1,2번째는 디폴트 값을 설정 하고

3번째는 설정 안하면 안된다는 점이다.

int sum( int a = 1, int b = 2, int c ) <=== (X)

int sum( int a = 1, int b, int c ) <=== (X)

int sum( int a, int b = 2, int c ) <=== (X)


부분 디폴트 값 설정은 맨 오른쪽 매개 변수 부터 설정 한다.





[전체 예제]


#include <iostream>


int sum( int a = 1, int b = 2 )

{

    return a + b ;

}


int sum2( int a, int b = 2, int c = 3 )

{

    return a + b + c ;

}


int main(int argc, char** argv) 

{

    int result = 0 ;


    result = sum();

    std::cout<<result<<std::endl;

    

    result = sum(8);

    std::cout<<result<<std::endl;

    

    result = sum( 6, 3 );

    std::cout<<result<<std::endl;

    

    result = sum2( 5 );

    std::cout<<result<<std::endl;

    

    result = sum2( 5, 6 );

    std::cout<<result<<std::endl;

    

    result = sum2( 5, 6, 7 );

    std::cout<<result<<std::endl;

return 0;

}


[결과]

 3

 10

 9
 10
 14
 18




반응형

'프로그램 > C++' 카테고리의 다른 글

[C++] bool 자료형  (0) 2017.12.29
[C++] namespace 사용법  (0) 2017.12.27
[C++]인라인 함수 사용법  (0) 2017.12.26
[C++]함수 오버로딩 (Function Overloading)  (0) 2016.12.03
[C++] cout,cin 사용법  (0) 2016.11.15

+ Recent posts