Pages

Showing posts with label C언어 학습-0. Show all posts
Showing posts with label C언어 학습-0. Show all posts

Saturday, January 6, 2018

C/C++ 언어 프로그래밍-연산자4

C/C++ 연산자 4

조건 연산자: a ? b  : c 의 형태로 사용됩니다. a 의 결과가 참이면 b 를 수행하고 거짓이면 c 를 수행하게 됩니다.

사용예시 :

예제코드
#include <iostream>
using namespace std;

int main() {

     int a, b;

          a = 1 ;
          b = 10 ;

     a > b ? cout<<" true ! "<<endl : cout<<" false"<<endl ;

          return 0;
}

실행결과

- 정수형 변수 a, b 를 선언하고 a 에는 1 을 b 에는 10 을 대입합니다. a > b 라는 조건의 결과는 거짓이므로 : 기호 뒤의 문장이 수행되어 "false" 라는 문장이 출력되는 것 을 알 수 있습니다.

size-of 연산자: sizeof 연산자는 이전 장에서 자료형의 크기를 확인할 때 사용해봤던 연산자로 메모리상의 크기를 byte 단위로 나타내 주는 연산자 입니다.

사용법:
1. sizeof(int) or sizeof(double) : 괄호안에 자료형을 기입
2. sizeof(a): 괄호안에 변수를 기입
<- 여기서 a 는 미리 정의된 변수를 의미합니다.
3. sizeof(100): 괄호안에 상수를 기입

cast 연산자: cast 연산자는 한 자료형을 임시로 다른 자료형으로 변환해주는 연산자로 형변환 연산자라고도 부릅니다.
사용법:
(자료형) 변수 or (자료형) 상수 (자료형) 수식 형태로

사용할 수 있습니다.

C/C++ 언어 프로그래밍-연산자3

C/C++ 연산자 3

비교/관계연산자: 크다 작다 같다 등 대소 관계를 연산하는 연산자로 결과값을 참(1) 또는 거짓(0) 으로 반환합니다. 보통 if 문에 사용되어 조건이 참이냐 거짓이냐를 따져서 수행문을 수행할지를 결정합니다. 연산자의 종류는 아래와 같습니다.

a==b  : a 와 b 가 같다
a!=b  : a 와 b 가 다르다
a>b   : a 가 b 보다 크다
a<b   : a 가 b 보다 작다
a>=b  : a 가 b 보다 크거나 같다
a<=b  : a 가 b 보다 작거나 같다

사용예시 :

예제코드
#include <iostream>
using namespace std;

int main() {

     int a, b, compare;
          a = 1 ;
          b = 10 ;

         compare = a > b ;
     cout << "compare = " << compare <<endl;

          compare = a < b ;
     cout << "compare = " << compare <<endl;

          return 0;

}

실행결과

- 정수형 변수 a, b, compare을 선언하고 a 에는 1을 b 에는 10을 대입합니다. 그리고 먼저 compare 에 a> b 의 결과를 대입합니다. b 가 a 보다 크기 때문에 a>b 의 식은 거짓이 되고 0 을 반환하게 됩니다. 이 반환된 0 이 compare 에 대입되어 0 이 출력됩니다. 그 다음 a<b 의 식은 참이기 때문에 1을 반환하고 결과적으로 1이 출력 됩니다.

논리연산자: 논리 연산자는 보통 다은 세가지 !, &&, || 가 있습니다. ! 는 논리적 부정을 나타내고 그의미는 참을 거짓으로 거짓을 참으로 반대되는 논리값을 구하는 연산자입니다. && 는 논리적 AND 연산자로 조건이 모두 만족할 때 참이라는 결론을 내리는 연산자입니다. || 는 논리적 OR 연산자로 조건이 하나라도 만족하면 참이라는 결론을 내리는 연산자 입니다.

사용예시 :

예제코드

#include <iostream>
using namespace std;

int main() {

     int a, b;
          a = 1 ;
          b = 10 ;

          if(a > 2 && b > 2){
           cout << "Logical AND !!!" <<endl;
          }else{
           cout << "Good bye !!!" <<endl;
          }

          if(a > 2 || b > 2){
           cout << "Logical OR !!!" <<endl;
          }else{
           cout << "Good bye !!!" <<endl;
          }

          return 0;
}

실행결과

- 정수형 변수 a, b를 선언하고 a 에는 1을 b 에는 10 을 대입합니다. 첫번째 if 문의 조건이 a > 2 && b > 2 로 a 가 2 보다 크다라는 조건이 참이어야 하고 b 가 2 보다 크다는 조건도 참이어야 "Logical AND !!!" 라는 문장이 출력됩니다. 그렇지 않으면 "Good bye !!!" 라는 문장이 출력되는 코드 입니다. a 에 1 을 대입하였기 때문에 a>2 라는 조건이 거짓이므로 "Good bye !!!" 라는 문장이 출력되는 것을 확인할 수 있습니다. 두번째 if 문에서는 && 가 아닌 || 를 사용하였습니다. 이때는 둘 중 하나라도 참이면 "Logical OR !!!" 라는 문장이 출력되게 되어 있습니다. b 에 10 을 대입하였기 때문에 b>2 라는 조건이 참이므로 Logical OR !!!" 이라는 문장이 출력 됩니다.

C/C++ 언어 프로그래밍-연산자2

C/C++ 연산자 2

증감연산자: 변수에 저장된 값을 1 씩 증가 혹은 1 씩 감소 시키는 연산자로 자주 사용되는 연산자 입니다. (예로 for 반복문) '++' 는 증가 연산자, '--' 는 감소 연산자를 의미합니다.

사용예시 1.:
예제코드

#include <iostream>
using namespace std;

int main() {

     int a;
          a = 1 ;
     cout << "(1) a = " << a << endl;
     a++;
     cout << "(2) a = " << a << endl;
          a--;
     cout << "(3) a = " << a << endl;
     return 0;

}


실행결과

- 정수형 변수 a 에 1 을 대입합니다. 그리고 출력을 하면 1 이 출력되는 것을 알 수 있습니다. 그 다음 증가연산자를 사용해 a 에 저장된 값을 1 증가 시키고 (a++) 출력을 하면 a 의 값이 2 가 된 것을 알 수 있습니다. 마지막으로 감소연산자를 사용해 a 에 저장된 값을 1 감소 시키면 (a--) a 에 저장된 값이 1 로 바뀐 것을 확인할 수 있습니다.

- 증감연산자는 변수 앞과 뒤 어느 곳에도 붙일 수 있습니다. 앞에 붙으면 선행처리, 뒤에 붙으면 후행처리하며 다음 예제에서 그 차이를 알 수 있습니다.

사용예시 2.:

예제코드

#include <iostream>
using namespace std;

int main() {

     int a, b, A, B;

          a = 1 ;
          b = ++a ;
          cout << "a = " << a << ", b = " << b <<endl;

          A = 1 ;
          B = A++ ;
          cout << "A = " << A << ", B = " << B <<endl;

          return 0;
}

실행결과

- ++a 선행처리를 통해 a의 값을 1 증가시켜 2로 만들고 이 값을 b 에 저장합니다. 그 결과 a, b 둘 다 2가 됩니다. 반면 후행처리의 경우 (A++),  A의 값 1이 먼저 B에 대입되고 그 후 A 값이 하나 증가되어 A 는 2, B 는 1 이 출력됩니다.

비교/관계연산자: 크다 작다 같다 등 대소 관계를 연산하는 연산자로 결과값을 참(1) 또는 거짓(0) 으로 반환합니다. 연산자의 종류는 아래와 같습니다.

a==b  : a 와 b 가 같다
a!=b  : a 와 b 가 다르다
a>b : a 가 b 보다 크다
a<b : a 가 b 보다 작다
a>=b : a 가 b 보다 크거나 같다
a<=b : a 가 b 보다 작거나 같다

Friday, January 5, 2018

C/C++ 언어 프로그래밍-연산자1

C/C++ 연산자 1

C/C++ 언어에서는 상수 및 변수들을 이용해 + - * / 등의 사칙 연산, 크다, 작다, 같다 등의 비교/관계 연산, 참 거짓을 판단해 수행하는 조건 연산 등이 가능하게 하는 다양한 종류의 연산자들이 있습니다. 우선 간단하고 자주 쓰이는 연산자의 종류를 먼저 살펴보겠습니다.

대입 연산자: 변수에 값을 저장 (대입) 하는 연산자로 '=' 기호를 사용합니다. 수학에서는 등호 (같다) 로 나타내지만 프로그래밍에서는 대입 연산자를 나타내고 같다는 '==' 기호를 사용합니다.

사용예시 1. :
  int num = 1 ;
- int 는 앞 페이지에서 이야기한 정수형을 의미하고 num 은 변수의 이름을 나타냅니다. 대입 연산자 '='를 이용해 변수 num 에 1을 대입 (저장) 합니다.

사용예시 2. :
예제코드
#include <iostream>
using namespace std;

int main() {

     int num ;
     num = 1 ;
     cout << "First  num  = " << num << endl;

     num += 1 ;
     cout << "Second num  = " << num << endl;

     return 0;

}

실행결과

- 먼저 정수형 변수 num 에 1을 대입 (저장) 합니다. 이 결과를 출력하면 1 이라는 결과를 얻습니다 (First num). 그 다음 줄에서 num += 1 이라고 입력하면 이는 num = num + 1 로 인식되고 그 결과 num 에는 최종적으로 2 가 대입 됩니다 (Second num). 이는 누적 대입 연산자라고 합니다. 물론, '-=', '*=', '/=' 도 사용 가능합니다.

산술 연산자: 수학의 사칙연산과 같은 +, -, *, / 연산자와 나머지를 구하는 % 연산자를 산술 연산자라고 합니다. 사칙연산은 보통의 사칙연산과 동일합니다. % 연산자의 경우 피연산자는 정수형 데이터만 사용 가능합니다.

사용예시 :
예제코드
#include <iostream>
using namespace std;

int main() {

     int a, b, c, d ;
          a = 1 ;
          b = 2 ;
          c = a + b ;
          d = c % b ;

     cout << "c = " << c << endl;
     cout << "d = " << d << endl;

          return 0;

}

실행결과

- 정수형 변수 a, b, c, d 를 선언하고 a 에 1을 대입, b 에 2 를 대입합니다. 변수 c 에는 a + b 을 대입하면 c 에는 사칙연산결과 (1+2) 3이 대입 됩니다. 변수 d 에는 c % b (3%2) 의 연산결과가 저장 됩니다. 3 을 2 로 나눈 나머지는 1 이고 이 값이 변수 d 에 저장됩니다.
% 연산자는 짝수 홀수를 비교할 때 사용되기도 합니다. (예: a%2; 결과가 1 이면 홀수, 0 이면 짝수)

C/C++ 언어 프로그래밍-자료형

C/C++ 자료형

자료형이란 ?
프로그램 소스 코드는 변수, 상수, 예약어 등 많은 자료들로 구성이 되어 있습니다.
각 데이터들은 그들만의 형식으로 제공되어야 사용할 수 있고 이를 자료형 이라고 합니다.

(예: Num 이라는 이름을 갖는 변수를 선언하였다고 가정합니다.
       이 변수에 숫자 (정수) 를 저장해 사용하고 싶다면 변수 Num 를 정수형으로 선언해야 제대로 된 결과를 얻을 수 있습니다.)

자료형을 정리하기 전에 먼저 C 언어의 상수와 변수의 개념을 정리하자면 간단히 다음과 같습니다.

상수 (Constant) : 보통 수학에서 상수라 하면 변하지 않는 '숫자' 를 이야기 하는데 프로그래밍에서는 숫자 뿐만 아니라 문자 등도 상수에 포함됩니다. 즉 변하지 않고 고정된 값이라는 의미합니다. (예: 1, 2, 3, ..., +, -, ...)

변수 (Variable) : 상수와 반대되는 개념으로 변하는 값을 의미 합니다. 위 예시에 Num 이 변수에 해당되며 Num에 3을 대입하면 (Num = 3;) 이 Num은 프로그램상에서 3 으로 사용되고 다시 5 를 넣으면 (Num=5;) 5 로 사용됩니다.

*Tip: 변수 이름을 만드는데 알아야 될 간단한 규칙은 다음과 같습니다.

- 영문자 대소문자, 아라비아 숫자 및 밑줄(_) 들로 구성.
- 대소문자를 구분.
- 첫 글자는 밑줄(_)이나 영문자 대소문자로 시작.
- 예약어 (int, double, for, while 등 C++ 언어에서 이미 사용 예약이 되어있는 이름들) 사용 금지

정수형 상수 :
소수점이 없는 숫자를 나타낼 때 사용되는 자료형으로  (unsigned) short, (unsigned) int, (unsigned) long 등이 있습니다. 구분하는 이유는 기억 공간에 값을 저장할 때 크기를 조금씩 다르게 주기 위함입니다. 앞에 unsigned 를 붙이면 양수만 취급하겠다는 의미입니다. 제 경우에는 (unsigned) int 형 말고는 다른것들을 쓸일이 별로 없었네요. --ㅋ

사용예시 : int num = 7 ;

실수형 상수 :
소수점이 있는 숫자를 나타낼 때 사용되는 자료형으로 float 과 double 이 있습니다. 제 경우는 float 보다는 double을 거의 사용하고 있습니다. 여러모로 편리해서...

사용예시 : double num = 7.1 ;

문자형 상수:
말 그대로 문자를 나타낼 때 사용하는 자료형으로 단일문자, 문자열 상수등이 있습니다. 단일 문자의 경우는 (unsigned) char, 문자열의 경우 string 이라는 자료형을 사용합니다.

사용예시 : char CH = 'T' ; string STR = "TTTTT" ;

*Tip: 내 컴퓨터 시스템상 자료형들의 크기를 확인하는 간단한 코드는 다음과 같습니다.

#include <iostream>
using namespace std;
int main() {
cout<< "Size of int = " << sizeof(int) << " byte(s)"<<endl;
cout << "Size of double = "<<sizeof(double)<<" byte(s)"<<endl;
cout<< "Size of char = " << sizeof(char) << " byte(s)"<<endl;
return 0;
}

아래 결과는 제 컴퓨터 시스템에서의 결과 입니다.