본문 바로가기

보고서/10월 업무일지

10월 5일 업무일지

2.7 문자열

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)
-->문자열 : 문자열 에서는 항상 맨 마지막이 NULL(0)=>\0 로 끝이난다.
위그림에서 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>

int main()
{
  int A,B;
  
  A=1<2;
  B=1>2;
  printf("A=%d\nB=%d\n",A,B);

  return 0;
}

위 소스에서 A 는 참이므로 1이 출력되고
B는 거짓이므로 0이 출력된다.

**TTL 트랜지스터,트랜지스터,로직
**TTL Level 이라고하면 5V에 동작하는 것을 말한다.

A=1<2; 항이 여러개이므로 다항연산자라고도 한다.

위 소스에서 내용에 40; 이라고 쳐도 컴파일은 되지만 아무런 동작은 하지않는다.
1<2;라고 적으면 계산을 해서 참이므로 1; 이 되지만 역시 동작은 되지 않는다.

#include <stdio.h>

int main()
{
  int A=3;
  char B=7;

  B=B+A;  //A가 인트형이고 B가 캐릭터 형이다. 둘다 정수형이므로 어느정도 형확장과 형축소가 가능하다.
            B+A 에서 B 에서 형확장이 일어나고 B=에서 다시 형축소(결과 4바이트중에 3바이트는 버린다)가
            일어난다.

  printf("%d\n",B);

  return 0;
}




섭씨 입력 --> 화씨 출력 프로그램


'보고서 > 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