C 5Day (20160113)
by jennysgap산술연산자 예제(계산기) 문제점
- 내가 쓰고 싶은 연산(+ 등...)을 계산기처럼 설정해서 쓸 수 없다 : 스위치
- 연산 후 바로 프로그램이 종료된다 : 반복론
- 복합적으로 연산이 안된다 : 동적할당 (가변적인 길이로 입력)
- 등...
!= 순서주의 (나중에 컴파일러하면 오류로 걸러내지 못함. 하나하나 보면서 내가 찾아야 함)
대입연산자 예제
#include <stdio.h>
int main(void)
{
int su1, su2
su1=su2=5 //오른쪽에서 왼쪽으로 대입
printf("su1 + 1 = %d\n", su1+=1); //su1=su1+1 su1=6
printf("su1 - 1 = %d\n", su1-=1); //su1=su1-1 su1=5
printf("su1 * su2 = %d\n", su1*=su2); //su1=su1*su2 su1=25
printf("su1 / su2 = %d\n", su1/=su2); //su1=su1/su2 su1=5
printf("su1 %% su2 = %d\n", su1%=su2); //su1=su1%su2 나머지값=0
return 0;
}
전치와 후치에 따른 연산자 비교
전치 : ++a로 표기하며 a=a+1을 먼저 처리한다.
후치 : a++로 표기하며 a의 데이터를 사용한 후 a=a+1을 처리한다.
증감연산자 예제
#include <stdio.h>
int main(void)
{
int num1=12;
int num2=12;
printf("num1 : %d\n", num1);
printf("num1++ : %d\n", num1++);
printf("num1 : %d\n\n", num1);
printf("num2 : %d\n", num2);
printf("++num2 : %d\n", ++num2);
printf("num2 : %d\n\n", num2);
}
#include <stdio.h>
int main(void)
{
int num1=10;
int num2=(num1--)+2;
printf("num1 : %d\n", num1);
printf("num2 : %d\n", num2);
return 0;
}
만약 증감연산자 예제 보고도 이해가 조금 안된다 싶으면 아래 문제 풀어보기
#includ <stdio.h>
int main(void)
{
int a=5, b-6, c=10, d;
d=++a*b--;
printf("a=%d, b=%d, d=%d\n", a, b, d);
d=a++ + ++c-b--;
printf("a=%d, b=%d, c=%d, d=%d", a, b, c, d);
a=1;
b=0;
d=a++ || ++b*d-- / ++c;
printf("a=%d, b=%d, c=%d, d=%d", a, b, c, d);
d=b++ && ++a / ++c*d++;
printf("a=%d, b=%d, c=%d, d=%d", a, b, c, d);
return 0;
}
비트연산자 예제
#include <stdio.h>
int main(void)
{
int num1=12;
int num2=7;
int result=num1|num2; // 15
printf("num1과 num2의 논리합 : %d\n", result);
return 0;
}
비트라는 것은 '2진수로 계산하라'는 의미
비트연산자를 AND로도 해보고 XOR로도 해보기
#include <stdio.h>
int main(void)
{
int su1=15;
su1=~su1;
printf("su1의 비트 부정 : %d\n:, su1);
return 0;
}
Shift연산자 예제
#include <stdio.h>
int main(void)
{
int op=30, result;
result=op<<1;
printf("30을 좌측으로 1비트 이동시킨 결과 = %d\n", result);
return 0;
}
<<1 0000 0000 0000 0000 0000 0000 0001 1110
0000 0000 0000 0000 0000 0000 0011 1100
#include <stdio.h>
int main(void)
{
int op=30, result;
result=op>>1;
printf("30을 우측으로 1비트 이동시킨 결과 = %d\n", result);
return 0;
}
>>1 0000 0000 0000 0000 0000 0000 0001 1110
0000 0000 0000 0000 0000 0000 0000 1111
'BOX' 카테고리의 다른 글
C 7Day (20160115) (0) | 2016.01.21 |
---|---|
C 6Day (20160114) (0) | 2016.01.20 |
C 4Day (20160112) (0) | 2016.01.20 |
C 3Day (20160111) (0) | 2016.01.20 |
C 2Day (20160108) (0) | 2016.01.20 |
블로그의 정보
jennysgap
jennysgap