목차
【 1】Visual C++6.0에서 실시하는 법
【 2】프로그램의 구조
[ 3] 변수
[ 4] 글로벌변수
[ 5] 기억장소의 종류
[ 6] 자동변수
[ 7] 정적변수
[ 8] 자동변수와 정적변수의 차이
[ 9] 정적외부변수와 자동국소변수의 유효범위
[10] 외부정적으로 선언된 문자배열
[11] 레지스터변수
[12] 외부변수
[13] 상수
[14] 자료형
[15] 확장문자
[16] 변환문자
[17] 계산식
[18] 산술연산자
[19] 대입연산자
[20] 형변환규칙과 캐스터 연산자
[21] 조건연산자
[22] 비트연산자
[23] 쉼표연산자
[24] 연산자 우선순위와 결합순서
[25] 1차연산자 - 단항연산자, 간접연산자(*), 번지연산자(&), 1의보수연산자, 논리연산자, cast 연산자, sizeof, 증감연산자
926] 2항연산자 - shift 연산자, 관계,상등연산자, 논리연산자.
【 2】프로그램의 구조
[ 3] 변수
[ 4] 글로벌변수
[ 5] 기억장소의 종류
[ 6] 자동변수
[ 7] 정적변수
[ 8] 자동변수와 정적변수의 차이
[ 9] 정적외부변수와 자동국소변수의 유효범위
[10] 외부정적으로 선언된 문자배열
[11] 레지스터변수
[12] 외부변수
[13] 상수
[14] 자료형
[15] 확장문자
[16] 변환문자
[17] 계산식
[18] 산술연산자
[19] 대입연산자
[20] 형변환규칙과 캐스터 연산자
[21] 조건연산자
[22] 비트연산자
[23] 쉼표연산자
[24] 연산자 우선순위와 결합순서
[25] 1차연산자 - 단항연산자, 간접연산자(*), 번지연산자(&), 1의보수연산자, 논리연산자, cast 연산자, sizeof, 증감연산자
926] 2항연산자 - shift 연산자, 관계,상등연산자, 논리연산자.
본문내용
는 후위형만 써야한다. 왜냐하면 while문을 전위문으로 하면 10미만인 9번만 수행되어 답이 45가 되어 1~9까지의 합이 나타난다.
(3) 이항 연산자
① shift 연산자 (<<, >>)
- 정수 변수의 값을 좌측이나 우측으로 한 비트 단위로 밀어 내기 기능을 사용하며, <<(좌측 쉬프트),
>>(우측 쉬프트)가 사용된다.
- 새로 입력되는 자리에는 0이 들어온다.
<예>
#include
main(){
int left, right, x=12;
left=x<<3;
right=left>>2;
printf("left=%d %d %d \n", left, x, x*8);
printf("right=%d %d %d \n", right, left, left/4);
getch();
}
<결과> left=96 12 96
right=24 96 24 //시스템마다 다른 값이 나온다.
<풀이> x의 값 12를 왼쪽으로 3bit 이동한 left의 값과 오른쪽으로 2bit이동한 right의 값을 출력한다.( n bit 이동은 2^n 만큼 곱하거나 나눈 것을 의미한다.
② 관계,상등 연산자 (< ,>,<=,>=,==,!=)
참이면 1 거짓이면 0을 갖는다.
컴파일러는 a [연산자] b 를 a - b [연산자] 0 으로 해석한다.
오른쪽에서 왼쪽으로 연산한다.
ex) 3 < j < 5 ⇔ (3 < j) < 5
x < x + y 와 0 < y는 때에 따라 같지 않다.
x가 비교적 큰수이고 y는 상대적으로 작은 수일때 그러하다.
그 이유는 컴파일러는 무한한 정확도를 가지지 못하기 때문이다
(예1)
#include
main(){
int a, b;
a=4; b=5;
if(a+b !=5)
printf("Doesn't add up to five."),
getch();
}
<결과>Doesn't add up to five.
☞ 변수의 합이 어떤 값과 같지 않을 때 참으로 되어 실행된다.
(예2)
#include
main(){
int a=15, b=5,c=0;
if(a>=b) c=a-b;
else if(a<=b) c=a+b;
printf("c=%d\n",c);
getch();
}
<결과> c=10
☞ a의 값이 b보다 크면 a-b를 넣고, 그렇지 않으면 a+b의 값을 넣는다.
③ bitwise-and(&), bitwise-exclusiveor(^)
TOP
(예1)
#include
main(){
int x=0x0345, y=0x0f0f, z1,z2,z3;
z1=x&y; z2=x|y; z3=x^y;
printf("z1=%x z2=%x z3=%x\n",z1,z2,z3);
getch();
}
<결과> z1=305 z2=f4f z3=c4a
A
B
&
|
^
z1=x&y
x 0000001101000101
y 0000111100001111
z1 0000001100000101
0
0
0
0
0
0
1
0
1
1
1
0
0
1
1
1
1
1
1
0
※ & : 0을 거짓으로 보고 1은 참으로 보았을 때 두수를 비교해서 둘 다 참일 때만 참
| : 0을 거짓으로 보고 1은 참으로 보았을 때 두수를 비교해서 둘 중 하나만 참이면 참
^ : 0을 거짓으로 보고 1은 참으로 보았을 때 두수를 비교해서 둘이 같으면 거짓, 다르면 참
④ 논리 연산자 (||,&&,!)
TOP
!(논리 부정)는 수식이 0 값을 가질 때 1이 되고,0이 아닌 값을 가질때 0이 된다.
!!5는 5가 아니라 !(!5) == !(0) == 1이 된다.
char c = 'A'; 일 때 !c는 A의 아스키 코드값 65의 !65 == 0이 된다.
&&(논리곱:and)가 ||(논리합:or)보다 우선 순위가 높고
좌측에서 우측으로 결합한다.
expr1 && expr2일때 expr1이 0값을 가지면 expr2를 처리하지 않고 0값을 가지며
expr1 || expr2일때 expr1이 1을 가지면 expr2를 처리하지 않는다.
이것을 short circuit라 한다.
(예1)
#include
main() {
int a=0, b=0,c;
c=a &&b++;
printf("c=%d b=%d\n",c,b);
c=a||b++;
printf("c=%d b=%d\n",c,b);
getch();
}
<결과> c=0 b=0
c=0 b=1
(1) &&(and : 논리곱) .....둘다 참일 때 참이 된다.
(2) || (or : 논리합).......둘 중 하나가 참이면 참이 된다.
(3) ! (not : 부정) ..........서로 반대
(예2)
#include
main(){
int a=1,b=0,c,d; /*a에는 모든 정수에 대해 결과는 같다.*/
c=!a ; d=!b; /*a를 1로 하면 !a=0, b를 0으로 하면 !b=1*/
printf(" !%d=%d\n !%d=%d\n", a,c,b,d);
getch();
}
<결과> !1=0
!0=1
(예3)
#include
main(){
int i;
i=!0; /*!0은 0(거짓)의 부정값이므로 1이 된다*/
printf("i 는 ① %d\n",i);
if(!1)
i=6; /*if(!1)에서 현재의 변수값은 1이므로 0(거짓)이 되어 수행하지 않는다*/
printf("i 는 ② %d\n",i);
if(!(i==6)) /*i=1이므로 즉 i가 6이 아니므로 if(!(i==6)을 수행한다*/
printf("i 는 ③ %d\n",i);
getch();
}
<결과> i 는 ① 1
i 는 ② 1
i 는 ③ 1
(예4)
#include
main(){
int i;
i=!0; /*!0은 0(거짓)의 부정값이므로 1이 된다*/
printf("i 는 ① %d\n",i);
if(!0)
i=6; /*if(!0)에서 현재의 변수값은 1이므로 참이 되어 수행한다*/
printf("i 는 ② %d\n",i);
if(!(i==6)) /*i=6이므로 if(!(i==6)은 거짓이 되어 수행하지 않는다*/
printf("i 는 ③ %d\n",i);
getch();
}
<결과> i 는 ① 1
i 는 ② 6
(3) 이항 연산자
① shift 연산자 (<<, >>)
- 정수 변수의 값을 좌측이나 우측으로 한 비트 단위로 밀어 내기 기능을 사용하며, <<(좌측 쉬프트),
>>(우측 쉬프트)가 사용된다.
- 새로 입력되는 자리에는 0이 들어온다.
<예>
#include
main(){
int left, right, x=12;
left=x<<3;
right=left>>2;
printf("left=%d %d %d \n", left, x, x*8);
printf("right=%d %d %d \n", right, left, left/4);
getch();
}
<결과> left=96 12 96
right=24 96 24 //시스템마다 다른 값이 나온다.
<풀이> x의 값 12를 왼쪽으로 3bit 이동한 left의 값과 오른쪽으로 2bit이동한 right의 값을 출력한다.( n bit 이동은 2^n 만큼 곱하거나 나눈 것을 의미한다.
② 관계,상등 연산자 (< ,>,<=,>=,==,!=)
참이면 1 거짓이면 0을 갖는다.
컴파일러는 a [연산자] b 를 a - b [연산자] 0 으로 해석한다.
오른쪽에서 왼쪽으로 연산한다.
ex) 3 < j < 5 ⇔ (3 < j) < 5
x < x + y 와 0 < y는 때에 따라 같지 않다.
x가 비교적 큰수이고 y는 상대적으로 작은 수일때 그러하다.
그 이유는 컴파일러는 무한한 정확도를 가지지 못하기 때문이다
(예1)
#include
main(){
int a, b;
a=4; b=5;
if(a+b !=5)
printf("Doesn't add up to five."),
getch();
}
<결과>Doesn't add up to five.
☞ 변수의 합이 어떤 값과 같지 않을 때 참으로 되어 실행된다.
(예2)
#include
main(){
int a=15, b=5,c=0;
if(a>=b) c=a-b;
else if(a<=b) c=a+b;
printf("c=%d\n",c);
getch();
}
<결과> c=10
☞ a의 값이 b보다 크면 a-b를 넣고, 그렇지 않으면 a+b의 값을 넣는다.
③ bitwise-and(&), bitwise-exclusiveor(^)
TOP
(예1)
#include
main(){
int x=0x0345, y=0x0f0f, z1,z2,z3;
z1=x&y; z2=x|y; z3=x^y;
printf("z1=%x z2=%x z3=%x\n",z1,z2,z3);
getch();
}
<결과> z1=305 z2=f4f z3=c4a
A
B
&
|
^
z1=x&y
x 0000001101000101
y 0000111100001111
z1 0000001100000101
0
0
0
0
0
0
1
0
1
1
1
0
0
1
1
1
1
1
1
0
※ & : 0을 거짓으로 보고 1은 참으로 보았을 때 두수를 비교해서 둘 다 참일 때만 참
| : 0을 거짓으로 보고 1은 참으로 보았을 때 두수를 비교해서 둘 중 하나만 참이면 참
^ : 0을 거짓으로 보고 1은 참으로 보았을 때 두수를 비교해서 둘이 같으면 거짓, 다르면 참
④ 논리 연산자 (||,&&,!)
TOP
!(논리 부정)는 수식이 0 값을 가질 때 1이 되고,0이 아닌 값을 가질때 0이 된다.
!!5는 5가 아니라 !(!5) == !(0) == 1이 된다.
char c = 'A'; 일 때 !c는 A의 아스키 코드값 65의 !65 == 0이 된다.
&&(논리곱:and)가 ||(논리합:or)보다 우선 순위가 높고
좌측에서 우측으로 결합한다.
expr1 && expr2일때 expr1이 0값을 가지면 expr2를 처리하지 않고 0값을 가지며
expr1 || expr2일때 expr1이 1을 가지면 expr2를 처리하지 않는다.
이것을 short circuit라 한다.
(예1)
#include
main() {
int a=0, b=0,c;
c=a &&b++;
printf("c=%d b=%d\n",c,b);
c=a||b++;
printf("c=%d b=%d\n",c,b);
getch();
}
<결과> c=0 b=0
c=0 b=1
(1) &&(and : 논리곱) .....둘다 참일 때 참이 된다.
(2) || (or : 논리합).......둘 중 하나가 참이면 참이 된다.
(3) ! (not : 부정) ..........서로 반대
(예2)
#include
main(){
int a=1,b=0,c,d; /*a에는 모든 정수에 대해 결과는 같다.*/
c=!a ; d=!b; /*a를 1로 하면 !a=0, b를 0으로 하면 !b=1*/
printf(" !%d=%d\n !%d=%d\n", a,c,b,d);
getch();
}
<결과> !1=0
!0=1
(예3)
#include
main(){
int i;
i=!0; /*!0은 0(거짓)의 부정값이므로 1이 된다*/
printf("i 는 ① %d\n",i);
if(!1)
i=6; /*if(!1)에서 현재의 변수값은 1이므로 0(거짓)이 되어 수행하지 않는다*/
printf("i 는 ② %d\n",i);
if(!(i==6)) /*i=1이므로 즉 i가 6이 아니므로 if(!(i==6)을 수행한다*/
printf("i 는 ③ %d\n",i);
getch();
}
<결과> i 는 ① 1
i 는 ② 1
i 는 ③ 1
(예4)
#include
main(){
int i;
i=!0; /*!0은 0(거짓)의 부정값이므로 1이 된다*/
printf("i 는 ① %d\n",i);
if(!0)
i=6; /*if(!0)에서 현재의 변수값은 1이므로 참이 되어 수행한다*/
printf("i 는 ② %d\n",i);
if(!(i==6)) /*i=6이므로 if(!(i==6)은 거짓이 되어 수행하지 않는다*/
printf("i 는 ③ %d\n",i);
getch();
}
<결과> i 는 ① 1
i 는 ② 6
추천자료
신호와 시스템 (그래프 그리기- C언어를 이용한 맥놀이 현상의 해석)
Binomial random variable X의 distribution C언어 구현
Spline곡선(수치해석) C언어 소스 입니다.
[castlenine]C언어 요점정리
명함관리 프로그램 발표(c언어)
자기소개서 카운팅 발표(c언어)
현금 입출금 프로그램 발표(c언어)
전기요금계산 프로그램 발표(c언어)
6족 로봇 보행 발표(c언어)
전화번호 관리 프로젝트 단순연결리스트를 이용한 c언어 자료구조
2013 장애인 기능경기 대회 1과제 C언어 답안 (프랜차이즈 커피전문점에서 상품별 판매실적 ...
Server_테트리스 [Tetris] C언어로 만든 테트리스
MAZE 확장[자료구조/자료구조및실험/c언어/c#/ Maze problem/Maze/Maze problem/미로/미로찾기]
소개글