2.7 문자열
-->문자배열(문자 하나를 저장)
-->문자열 : 문자열 에서는 항상 맨 마지막이 NULL(0)=>\0 로 끝이난다.
위그림에서 cText[9]=0; 의 효과와 같다. -마지막 주소여기는[9]에 0을 넣어줘야 문자열이다.
char cText1='A' 는 캐릭터형으로(1바이트) 'A'에 해당하는 아스키 코드가 저장된다.
cText1='A' 의=(대입연산자)의 왼쪽은 메모리 이다. 예를 들어 'A'의 위치가 1000번지의 주소값을 가진다 라고 하면 1000번지에 'A' -아스키코드 67이 저장된다는 말이다.
심볼 테이블(Symbol table)
Type(형) | Name(이름) | Address(주소) |
char | cText1 | 1000 |
char | cText2 | 999 |
char[] - []는 배열 | cText | 989 |
989번지 [0] - char cText[10];//배열이며 제일빠른 수가 심볼테이블에서 주소로 온다 |
990 [1] |
991 [2] |
992 [3] |
993 [4] |
994 [5] |
995 [6] |
996 [7] |
997 [8] |
998 [9] [0]-[9]까지로 색인(index)라고 한다. |
999 |
1000번지 |
char cText[10]; 은 캐릭터형으로 [숫자] 만큼 만들 라는 말이며 []가 있는 것을 배열(Array)어레이 라고 한다. 998-989번지라고 하면 표시는 제일 처음의 989번지를 적는다.
cText[0]='A' 는 cText의 [0]번째 자리인 989번지에 A를 아스키 코드 로 저장 하라는 말이며 989번지에 아스키코드 65가 저장된다.
int A[10]; 인트가 4바이트 이므로 총 40 바이트가 된다.
short A[3]; 쇼트가 2바이트 이므로 총 6바이트가 된다.
문자배열 : 1바이트
cText[0]=65; == cText[0]='A'
cText='A'; 에러 가 난다. 바르게 고치면 cText[0]='A' 로 해야한다.
A | B | C | D | E | F | G | H | Z | Y |
0(NULL) |
위그림에서 cText[9]=0; 의 효과와 같다. -마지막 주소여기는[9]에 0을 넣어줘야 문자열이다.
printf("happy");
안보이지만 happy\0 로 되어있다.
printf와 scanf
printf("%d\n,cText1);
는 ,뒤의 cText1을 앞의 %d에 넣는다는 것이고
scanf("%s",&W);
는 %s 스트링을 받아서 뒤의 W로 넣어준다는 것이다.(메모리로)
scanf("%s",&W); 의 &는 앤퍼샌트 라고 하며 주소연산자로 쓴다.
2.8 연산자
연산자의 우선순위
산술연산 에서 두 피연산자의 자료형이 다르면 내부적으로 크기가 큰 자료형으로 변환하여 연산을 수행한다. 예를 들어 int+float의 연산은 float+float 로 변환하여 연산한다.
이렇게 자료형(타입)이 바뀌는 것을 캐스`트(cast)라고 한다. 형확장 과 형축소 가 일어난다.
논리연산자
#include <stdio.h> |
위 소스에서 A 는 참이므로 1이 출력되고
B는 거짓이므로 0이 출력된다.
**TTL 트랜지스터,트랜지스터,로직
**TTL Level 이라고하면 5V에 동작하는 것을 말한다.
A=1<2; 항이 여러개이므로 다항연산자라고도 한다.
위 소스에서 내용에 40; 이라고 쳐도 컴파일은 되지만 아무런 동작은 하지않는다.
1<2;라고 적으면 계산을 해서 참이므로 1; 이 되지만 역시 동작은 되지 않는다.
#include <stdio.h> B+A 에서 B 에서 형확장이 일어나고 B=에서 다시 형축소(결과 4바이트중에 3바이트는 버린다)가
|
섭씨 입력 --> 화씨 출력 프로그램
|
'보고서 > 10월 업무일지' 카테고리의 다른 글
10월 8일 업무일지 (0) | 2010.10.08 |
---|---|
10월 7일 업무일지 (0) | 2010.10.07 |
10월 6일 업무일지 (0) | 2010.10.06 |
10월 4일 업무일지 (0) | 2010.10.04 |
10월 1일 업무일지 (0) | 2010.10.01 |