'비트단위연산자'에 해당되는 글 1건

  1. 2010.01.22 C - Chapter 3. 변수와 연산자
gamE/C2010. 1. 22. 17:53






3-1. 덧셈 프로그램 구현을 위해 필요한 + 연산자

#include <stdio.h>

int main(void)
{
 3+4;
 return 0;

}

- 잘못된 코드


- 위의 + 기호처럼 연산을 요구할 때 사용되는 기호를 가리켜 연산자라 한다.


3-2. C언어는 데이터 저장을 위해 변수를 제공한다.
 1. 변수를 이용한 데이터의 저장
 - 변수란?
 > 데이터를 저장할 수 있는 메모리 공간에 붙여진 이름을 의미한다.



#include <stdio.h>

int main(void)
{
 int result; //변수 선언
 result=3+4; //덧셈 결과 저장

 printf("덧셈 결과 : %d \n", result);
 printf("%d 더하기 %d는 %d 입니다. \n", 3, 4, result);
 printf("변수 result에 저장된 값 : %d \n", result);

 return 0;

}

결과

덧셈 결과 : 7
3 더하기 4는 7 입니다
변수 result에 저장된 값 : 7



3-3. C언어에는 다양한 연산자가 존재한다.
 1. C언어가 제공하는 다양한 종류의 연산자들
 -대입 연산자(=)와 산술 연산자(+,-,*,/,%)

 연산자  연산자의 의미
 =  오른쪽에 있는 값을 왼쪽에 대입한다.
ex) a = 20
 +  왼쪽과 오른쪽에 있는 값을 더한다.
ex) a = 4+3
 -  왼쪽에 있는 값에서 오른쪽에 있는 값을 뺀다.
ex) a =4-3
 *  왼쪽과 오른쪽에 있는 값을 곱한다
ex) a= 4*3
 /  왼쪽에 있는 값을 오른쪽에 있는 값으로 나눈다
ex) a = 4/3
 %  왼쪽에 있는 값을 오른쪽에 있는 값으로 나눠서 나머지를 반환한다.
ex) a= 4%3



#include <stdio.h>

int main(void)
{
 int val1=4;
 int val2=2;

 printf("두 수의 덧셈: %d \n", val1+val2);
 printf("두 수의 뺄셈: %d \n", val1-val2);
 printf("두 수의 곱셈: %d \n", val1*val2);
 printf("두 수의 나눗셈: %d \n", val1/val2);
 printf("두 수의 나머지: %d \n", val1%val2);

 return 0;

}


결과

두 수의 덧셈: 6
두 수의 뺼셈: 2
두 수의 곱셈: 8
두 수의 나눗셈: 2
두 수의 나머지: 0




 2. 기타 대입 연산자(+=, -=, *=, /=, %=)
 - a = a + b;                 =               a +=b;
 - 위는 같은 의미


#include <stdio.h>

int main(void)
{
 int val1=2;
 int val2=4;
 int val3=6;

 val1+=3; //val1=val1+3;
 val2*=4; //val2=val2*4;
 val3%=5; //val3=val3%5;

 printf("result : %d %d %d \n", val1, val2, val3);
 
 return 0;

}

결과

result : 5 16 1


 3. 부호 연산으로서의 +와 -연산자

#include <stdio.h>

int main(void)
{
 int val1=2;
 int val2=-4;
 
 val1=-val1; //val1-=val1과 혼동 하지 말 것.
 printf("val1=-val1 연산 이후 val1은 %d \n", val1);
 
 val2=-val2;
 printf("val2=-val2 연산 이후 val2은 %d \n", val2);

 return 0;

}

결과

val1=-val1 연산 이후 val1은 -2
val2=-val2 연산 이후 val2은 4



 4. 증가, 감소 연산자
 

 연산자  연산자의 의미
 ++a  값을 1 증가 후 연산을 진행
ex) printf("%d", ++a)
 a++  연산을 진행한 후 값을 1 증가
ex) printf("%d", a++)
 -b  값을 1 감소 후 연산을 진행
ex) printf("%d, --b)
 b-  연산을 진행한 후 값을 1 감소
ex) printf("%d", b--)




#include <stdio.h>

int main(void)
{
 int val1=10;
 int val2=10;

 printf("선 연산 후 증가 : %d \n", val1++);
 printf("다시 한번 출력 : %d \n", val1);

 printf("선 증가 후 연산 : %d \n", ++val2);
 printf("다시 한번 출력 : %d \n", val2);

 


 return 0;

}


결과

선 연산 후 증가 : 10
다시 한번 출력 : 11
선 증가 후 연산 : 11
다시 한번 출력 : 11






#include <stdio.h>

int main(void)
{
 int val1=10;
 int val2=(val1--)+2;

 printf("val1 : %d \n", val1);
 printf("val2 : %d \n", val2); 

 return 0;

}


결과

val1 : 9
val2 : 12




5. 관계 연산자(비교 연산자)

 연산자  예  의미
 <  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 <stdio.h>

int main(void)
{
 int val1=10;
 int val2=12;
 int result1, result2, result3;

 result1=(val1==val2);
 result2=(val1<=val2);
 result3=(val1>val2);

 printf("result1 : %d \n", result1);
 printf("result2 : %d \n", result2);
 printf("result3 : %d \n", result3);

 return 0;

}



결과

result1 : 0
result2 : 1
result3 : 0



6. 논리 연산자
- 논리 연산자란 and, or, not을 표현하는 연산자이다.

 연산자  연산자의 의미
 &&  피연산자가 모두 참이면 true를 반환(and의 의미)
 ex) a && b
 ||  피연산자 중 하나라도 참이면 true를 반환(or의 의미)
 ex) a||b
 !  피연산자가 true면 false를, false면 true를 반환
 (not의 의미)
 ex) !a



#include <stdio.h>

int main(void)
{
 int val1=10;
 int val2=12;
 int result1, result2, result3;

 result1=(val1==10 && val2==12);
 result2=(val1<12||val2>12);
 result3=(!val1);

 printf("result1 : %d \n", result1);
 printf("result2 : %d \n", result2);
 printf("result3 : %d \n", result3);

 return 0;

}


결과

result 1 : 1
result 2 : 1
result 3 : 0



7. 비트 단위 연산자

~, &, ^, |, <<, >>

8. 콤마(,)연산자

#include <stdio.h>

int main(void)
{
 int a=1, b=2;
 printf("Hello "), printf("World! \n");

 a++, b++;
 printf("%d ", a), printf("%d ", b), printf("\n");

 return 0;

}


결과

Hello World!
2 3

 연산순위  연산자
 1  (), [], ->, .
 2  sizoof, &, ++, ==, ~, !,
 *(간접 지정 연산자), +(단항 연산자), -(단항 연산자)
 3  *(곱셈 연산자), /, %
 4  +(이항 연산자), -(이항 연산자)
 5  <<,>>
 6  <,<=,>=,>
 7  ==,!=
 8  &
 9  ^
 10  |
 11  &&
 12  ||
 13  ?;(삼항 연산자)
 14  =, +=, *=, /=, &=, &=, ^=, |=, <<=, >>=
 15  ,(콤마 연산자)


3-4 키보드로부터 데이터를 입력 받고 싶다!

1] scanf를 이용해서 키보드로부터 정수를 입력받기 원한다면?

#include <stdio.h>

int main(void)
{
 int result;
 int val1, val2;

 printf("첫 번째 숫자: ");
 scanf("%d", &val1); //첫 번째 데이터 입력

 printf("두 번째 숫자: ");
 scanf("%d", &val2); //두 번째 데이터 입력

 result=val1+val2; //덧셈 연산.
 printf("%d + %d = %d \n", val1, val2, result);

 return 0;

}


결과

첫 번째 숫자 : A
두 번째 숫자 : B
A + B = C



2] scanf를 이용하면 입력 형태를 다양하게 지정하는 것이 가능하다.

#include <stdio.h>

int main(void)
{
 int result;
 int val1, val2;

 printf("숫자 둘을 입력 하세요 : ");
 scanf("%d %d", &val1, &val2);

 result=val1+val2;
 printf("%d + %d = %d \n", val1, val2, result);

 return 0;

}


결과

숫자 둘을 입력하세요 : A B
A + B = C



'C 프로그래밍' ~80P



'gamE > C' 카테고리의 다른 글

C - Chapter 2. 프로그램의 기본 구성  (0) 2010.01.20
C - Chapter1. 이것이 C언어다.  (1) 2010.01.19
Posted by 생선날개