본문 바로가기

C언어/강의

2010년 10월 05일 화요일 (문자열 선언 & 연산자)

문자열

char ctext1 = 'A';
char ctext2 = 'B';
char ctext[10]; ☜ []안의 숫자는 메모리를 숫자*바이트 만큼 할당하게 한다. (char x 10 = 10바이트)

 형(Type) 이름(Name) or Simbol 주소(Address) 
char ctext1 1000 
char ctext2 999 
char[]  배열선언 ctext  989(~998 )

= ☜ 왼쪽에 있는 것은 대부분 메모리주소에 할당
char ctext[10]; ☜ ctext ='A'로 넣을수 없다. ctext[0]='A'; 이런식으로 주소를 지정해 주어야한다.(주소 989지정)
ctext[0]='A';
ctext[8]='Z';
     0                                                 ~                                     8         9
 A B \0
↑↑ 문자 배열이라 함.

ctext[9]=0; ☜ Null 선언, 문자열 (ctext[9]='\0'; 같은 뜻) " " 쓸경우 컴파일러에 의해 자동적으로 Null 선언
색인(Index) ☜ 같은 자료를 모아 놓은 것.

float A;
A=3/2;  ☜ 이렇게하면 1.0으로 잘못 나온다. 이유는 3/2를 정수로 입력되기때문이다. A=3/2f; 혹은 A=3/2.0; 입력

( ) ☜ 최상우 연산자 우선순위
#include <stdio.h>

main()
{

  int A;
  A = 1<2// 1은 2보다 작다 (참)
  printf("%d\n", A);
  A = 1>2// 1은 2보다 크다 (거짓)
  printf("%d\n", A);
  return 0;
}

참이면 1이 출력 거짓이면 
0이 출력 (논리값)

int+float 연산은 float+float로 변환되어 연산된다.(casting)
#include <stdio.h>

main()
{

  int A=3;   //정수형 3입력 (4byte)
  char B=7;  //문자/정수형 7입력 (1byte)
  B=B+A;      //B의 char문에 int형 3을 입력할수없으므로 A의 int문을 char로 변환한다.(형축소)
  printf("%d\n", B);
  return 0;
}

A의 int형이 B의 char형보다 더큰 자료형이여서 4byte 3을 1byte형 B에 넣을수 없으므로 A의 int형을
char형으로 줄여서 결과적으로 char+char가 된다.(형의 축소)