2012년 9월 1일 토요일

여러가지 연산자

이번엔 여러가지 연산자를 알아보겠습니다.

저번 포스트에 연산자에 대해 잠깐 언급했는데요.

1.이번엔 더 깊게 들어가 복합대입 연산자에 대해 말해보겠습니다.

저도 처음엔 기호를 붙여놔서 헷갈렸는데, 이해하고 나면 괸찮습니다.
 여기서 주의해야 할 점은 -=와 =-을 똑바로 구분하여 쓰는 것입니다.
만약 위에 tender2의 연산기호를 =-로 썻을 경우 -3이란 값이 나옵니다.

결과는 이렇게 나옵니다.

2.이번엔 기호만으로 더하고 빼는 연산자를 알아보겠습니다.

++num: 값을 1 증가 후, 속한 문장의 나머지를 진행 (선 증가, 후 진행)
num++: 문장 진행후 값 1 증가 (선 진행, 후 증가)
--num: 1 감소 후 진행
num--: 진행 후 1 감소

이렇게 기호로만 설명하면 무슨 말인지 모른다. 그래서 실험을 해본다.

앞에서 설명한 것처럼 변수뒤에 ++가 붙으면, 변수가 속한 절은 그대로의 값이지만,
연산 명령이 없는 절은 오히려 값이 추가가 된다.


설명대로 뒤에 값만 올랐다.

★감소 증가 연산자를 사용할 때, 유의할 점.

필자는 실험을 할 때, 한 눈에 편하게 보게하려고 처음에는 코드를 이렇게 적었다
printf("++tender: %d \n", ++tender);
printf("tender: %d \n", tender++);
printf("++tender: %d \n", tender);

그랬더니 맨위에 있는 ++텐더값도 중간에 있는 텐더값과 같은 값이 나왔다.

그리고 맨 아래 텐더값은 텐더값에 1을 더한 값에 또 1을 더한 값이 나오게 됐다.

즉, 필자는 개고생을 하였고 위에 절을 지우니 원래대로 되었다.

여기서 생각해보면 변수 뒤에 +,-값을 붙이려면 앞 절에는 다른 변수절이나 공백이거나

원래 변수 값을 쓰면 정상 값이 나온다는 것이다.

즉, 같은 변수일 경우에 앞 절의 같은 변수값에 영향을 받는다는 것이다.

3.관계 연산자

이건 초등학교 수학교과서를 배운적이 있는 사람들은 모두 알 것이다.

num1 > num2: 넘1이 넘2보다 큰가?
num1 < num2: 넘1이 넘2보다 작은가?
num1 == num2: 넘1이 넘2와 같은가?
num1 != num2: 넘1이 넘2와 다른가?
num1 >= num2: 넘1이 넘2와 같거나 큰가?
num1 <= num2: 넘1이 넘2와 같거나 작은가?

사실이면 1 거짓이면 0이 출력된다.

 보다 빠른 이해를 위해 결과3을 틀린 값으로 저장했다.


보다시피 결과 1,2,3 맞게 출력됐다.

4. 논리 연산자

이건 계산하는 기호가 아니라 참 거짓을 밝혀주는 기호라 생각하면 된다.

A && B : 에이와 비 모두 참이면 1 아니면 0
A || B: 에이와 비 둘 중 하나라도 참이면 1 아니면 0(저 기호는 빽슬래시키에 있다.)
!A: A가 참이면 0 거짓이면 1

이렇게 글로만 설명하면 무슨 말인지 모른다.

보다 쉬운 이해를 위해 3가지 연산자를 7개의 식으로 실험 하였습니다.

&&(결과1: 다 참인 것과 결과2: 하나만 참인 것)
||(결과3:다 참인 것, 결과4: 하나만 참인 것, 결과5: 모두 거짓인 것,)
!(결과6:-1인 것, 결과7: 0인 것)
결과는 1이 참 0이 거짓.

5. 콤마 연산자

이건 설명할 것도 없습니다.

예를 들면

ex)
include<stdio.h>
int main<void>
{
printf("www."), printf("beomicollection."), printf("blogspot."), printf("com")
return 0;
}
출력 결과


이걸로써 연산자를 마칩니다.

댓글 없음:

댓글 쓰기