Information Security

PART2 C프로그래밍 기초 다지기 021-031 본문

C언어 300제/PART 1, PART 2

PART2 C프로그래밍 기초 다지기 021-031

leeeeye321 2017. 3. 8. 01:44

연산자(Operators)

하나 이상의 피연산자(operand)에 대해 어떤 동작이나 계산을 수행하도록 지시하는 기호

  • 대입 연산자
  • 부호 연산자
  • 증감 연산자
  • 관계 연산자
  • 논리 연산자
  • 비트 연산자

021 대입 연산자 이해하기(=)

12: printf() 함수는 실행 결과로써 몇 바이트를 출력했는지를 반환한다.

이 줄에서는 그 반환 값을 변수 zz에 대입했다. (한글은 한 자당 2바이트)

-대입 연산자(=)는 오른쪽에 위치한 값 또는 연산의 결과를 왼쪽 변수에 대입해주는 역할을 한다.

-대입 연산자의 왼쪽에 올 수 있는 값을 L-Value라고 한다. 일반적인 변수들은 L-Value가 될 수 있지만 상수는 될 수 없다.

 

022 부호 연산자 이해하기(+,-)

-부호 연산자는 양수를 음수로 음수를 양수로 만들 때 사용한다.

 또, 특정 변수의 값을 양수나 음수로 초기화할 때도 사용한다.

-수학에서의 부호 연산과 일치한다.

 

023 사칙 연산자 이해하기(+, -, *, /)

-변수와 변수, 변수와 숫자, 숫자와 숫자간에 사칙 연산이 가능하다.

<사칙 연산자의 종류>

 연산자 이름 

 기호 

동작내용 

 덧셈 연산자

 + 

 2개의 피연산자를 더한다.

 뺄셈 연산자

-

 첫 번째 피연산자에서 두 번째 피연산자를 뺀다.

 곱셈 연산자

*

 2개의 피연산자를 곱한다.

 나눗셈 연산자

/

 첫 번째 피연산자를 두 번째 피연산자로 나눈다.

 나머지 연산자

%

 첫 번째 피연산자를 두 번째 피연산자로 나눌 때 

 생성  되는 나머지 값을 구한다.

 

024 증감 연산자 이해하기(++, --)

-증감 연산자는 주어진 변수의 값을 1 증가(++연산자) 또는 1 감소(--연산자)시키는 역할을 한다.

-주어진 수식 또는 함수에서 x값이 사용될 때,

++x는 x의 값을 먼저 1 증가 시킨 후 수식에 사용하라는 뜻이며, 

x++는 수식 또는 함수에 적용한 후에, 1을 증가시키라는 의미이다.

(--x, x--도 마찬가지) 

위 코드는 8번째 줄과 9번째 줄을 증가 연산자를 사용하지 않고 풀어서 쓴 코드이다.

<사칙 연산자와 증감 연산자의 우선 순위>

연산자

상대적인 우선 순위 

++ --

 1

* / %

 2

 + -

 3

 

025 관계 연산자 이해하기(<, >, =, >=, <=, !=)

-관계 연산자는 주어진 두 식을 평가하여 그 값이 큰지(>), 작은지(<), 크거나 같은지(>=), 작거나 같은지(<=) 그리고 같지 않은지(!=)를 비교하기 위해 사용한다.

 

026 논리 연산자 이해하기(|, &&, !)

-논리 연산자는 동시에 두 가지 이상의 조건을 판단하기 위해 사용한다.

※관계 연산자는 논리 연산자에 비해 먼저 평가된다. 괄호를 사용하지 않아도 된다.

 

027 조건 연산자 이해하기(?:)

 

028 쉼표 연산자 이해하기(,)

-쉼표 연산자(,)는 변수를 여러 개를 정의하거나 연관된 문장을 한 줄에 연속하여 작성할 때 사용한다.

 

029 비트 연산자 이해하기(|, &, ~, ^, <<, >>)

8: 비트 AND 연산자(&)는 두 개의 값이 모두 1인 경우 1이 되며, 두 개 중 하나라도 0이면 그 값은 0이 된다.

ch(1111 1111) & mask(0111 1111)의 값은 127(0111 1111)이다.

 

9: 비트 NOT 연산자(~)는 모든 비트의 값을 반전 시킨다.

(char) ~ch(1111 1111)의 값은 0(0000 0000)이다.

 

10: 비트 XOR 연산자(^)는 배타적 비트합 연산을 수행한다.

배타적 비트합 연산은 두 개의 비트가 서로 다른 경우에만 1이 되며, 두 개의 비트가 같으면 0이된다.

ch(1111 1111) ^ ch(1111 1111)의 값은 0(0000 0000)이다.

 

11: 비트 이동 연산자(>>)는 모든 비트를 오른쪽으로 지정한 만큼 이동시킨다.

ch(1111 1111) >> 1의 값은 127(0111 1111)이다.

1비트씩 오른쪽으로 이동하였고 왼쪽에 0을 채운다.  

 

12: 비트 이동 연산자(<<)는 모든 비트를 왼쪽으로 지정한 만큼 이동시킨다.

mask(0111 1111) << 1의 값은 254(1111 1110)이다.

1비트씩 왼쪽으로 이동하였고 오른쪽에 0을 채운다. 

 

030 캐스트 연산자 이해하기

-캐스트 연산자는 데이터의 형 변환을 위해 사용한다.

7: 5 /2= 2.5 이지만 x가 정수형 이므로 2가 출력된다.

8: 정수형 변수 x에 캐스트 연산자 double을 사용하여 x의 값을 double형 데이터 값으로 변환하였기 때문에 x / y의 값은 2.500000이 된다.

 

031 sizeof 연산자 이해하기

-sizeof 연산자는 변수 및 문자열이 차지하는 메모리 크기를 구하기 위해 사용한다.