본문 바로가기

C

9주차 수업내용

cast 연산자

이미 지정된 자료형을 다른 자료형으로 일시적으로 강제로 바꿀 수 있는데 이것을 명시적 형 변환(explicit type conversion)이라고 하며 이때 cast 연산자 사용

 

변환시키고자 하는 값이나 변수 앞에 해당 자료형을 괄호로 묶어 사용

(자료형)값_or_변수

  • (int)x, (char)ch, (double)sum

숫자 3은 int형, (double)3은 일시적으로 double형 3.0

'A'는 문자, (int)'A'는 숫자(ASCII코드 값) 65

int형 65는 숫자, (char)65는 ASCII코드 값 65에 해당하는 문자 'A'

 

cast 연산자 예

#include <stdio.h>
int main(void)
{
	int x=10,y=4;
	double z,z1;
	printf("1:%d\n",10/4); //2
	printf("2:%f\n",10/4); //0.000000, 컴파일러에 따라 2.500000, 경고
	printf("3:%f %f %f\n",10/4.0, 10.0/4, 10.0/4.0);//모두 2.500000
	printf("4:%d\n",x/y); // 2
	printf("5:%f\n",x/y); // 0.000000, 컴파일러에 따라 2.500000, 경고
	z=x/y; //double형인 z에 2를 저장하면 소수점만 더 붙음
	printf("6:%f\n",z); // 2.000000
	z=(double)x/y; //10.0/4
	printf("7:%f\n",z); // 2.500000
	z=x/(double)y; //10/4.0
	printf("8:%f\n",z); // 2.500000 
	z=(double)x/(double)y; //10.0/4.0
	z1=(double)(x/y); //(double)(10/4)
	printf("9:%f %lf %lf\n",z,z,z1);// 2.500000 2.500000 2.000000  
	return 0;
}

 

콤마 연산자

여러 개의 수식을 하나의 수식처럼 표현할 때 사용

왼쪽부터 순서대로 평가

콤마 연산자는 여러 줄을 한 줄로 줄일 때 사용

 

세 가지 방법 모두 같은 결과

  • x = 10;
    y = 5;
  • x = 10; y = 5;
  • x = 10, y = 10;

 

sizeof 연산자

sizeof 연산자는 변수나 자료형, 배열 등이 차지하는 메모리 영역의 크기를 바이트(byte) 단위로 얻음

  • sizeof 변수_or_배열명
    • sizeof num
  • sizeof(자료형)
    • sizeof(int)
  • 배열은 sizeof(배열명)을 쓰고, 자료형×방의 크기가 계산되어 나옴

 

sizeof 연산자 예

#include <stdio.h>
int main(void)
{
	int x;
	int y[10];

	printf("%zd  ",sizeof("I love you!"));//12
	printf("%zd  ",sizeof("대한"));	// 5(cp949) or 7(utf-8) 
	printf("%zd  ",sizeof(int));	// 4  
	printf("%zd  ",sizeof(x));	// 4, sizeof x라고 써도 됨 
	printf("%zd\n",sizeof(y));	// 40, sizeof y라고 써도 됨    
	return 0;
}

 

 

유니코드(Unicode)

Unicode는 전 세계의 모든 문자를 표현할 수 있는 단 하나의 문자셋

코드 포인트 표기는 U+0041 과 같이 함

U+ 는 Unicode를 의미하고, 0041은 코드 포인트 값으로서 16진수

 

Unicode 인코딩

UTF-32, UTF-16, UTF-8 등을 제공

 

영문자 A는 U+0041을 1(0x41)이나 2(0x0041)나 4(0x00000041)바이트에 저장

한글 한 글자는 2(utf-16), 3(utf-8), 4(uft-32)바이트로 저장

윈도우에서 한글 인코딩은 2바이트로 한글을 표현하는 EUC-KR와 확장 버전인 CP949 사용

 

 

&연산자

#include <stdio.h>
int main(void)
{
	int a=10, b=20;
	printf("변수 a의 값=%d, 주소=%p\n",a, &a); 
	printf("변수 b의 값=%d, 주소=%p\n",b, &b); 
	return 0;
}

&a는 a변수의 메모리 주소의 첫 번지. int형은 4바이트이므로 변수의 저장 공간은 4개의 주소를 가짐

&는 그 중에서 시작 주소를 얻을 수 있음

 

기타 연산자

[] 첨자 연산자

  • 10장, 배열
  • Subscript
  • a[b]
  • int x[10]; //구두점
  • x[0]=1; //연산자

구조체 멤버 접근 연산자

  • 12장, 구조체
  • Structure reference
    • a.b
  • Structure dereference
    • a->b

* 간접참조연산자

  • 11장, 포인터
  • Indirection
  • int x=10,y;
  • int *px=&x; //구두점
  • y=*px; //연산자

 


제어문

제어문

위부터 아래로 순차적으로 실행되는 프로그램의 실행 순서를 바꾸기 위해서 사용

for문과 if문의 사용 빈도가 가장 높음

 

조건문 반복문 분기문
if for goto
if ~ else while continue
switch ~ case do ~ while break

 

 

조건문 : if

if : 조건식이 "참"인가?

조건식이 참이면 문장1 실행, 거짓이면 문장1은 실행하지 않고 건너뜀

if (조건식) {
	문장1;
}
다음문장;
if(score==0) printf("0점 입니다.\n");           //score가 0과 같으면 "0점 입니다."를 출력
if(score) printf("0점이 아닙니다.\n");          //score가 0이 아닌 모든 값을 가지면 "0점이 아닙니다."를 출력
if(!score) printf("0점 입니다.\n");             //score가 0이면 "0점 입니다."를 다시 출력

 

조건문 : if ~ else

양자택일

조건식이 참이면 문장1 실행 후 다음문장 실행, 거짓이면 문장2 실행 후 다음문장 실행

if (조건식){
	문장1;
}    
else {
	문장2;
}
다음문장;

 

 

조건문 : 다중 if~else

더 많은 조건에 따라 분기해야 하는 프로그램은 다중 if~else문을 사용

 

조건식1이 참이면 문장1 실행 후 다음문장 실행,

조건식2가 참이면 문장2 실행 후 다음문장 실행,

둘다 아니면 문장3 실행후 다음문장 실행

if (조건식1) {
	문장1;
}
else if (조건식2) {
	문장2;
}
else {
	문장3;
}
다음문장;

'C' 카테고리의 다른 글

11주차 수업내용  (0) 2024.05.14
10주차 수업내용  (0) 2024.05.07
7주차 수업내용  (0) 2024.04.16
6주차 수업내용  (0) 2024.04.09
5주차 실습과제2  (0) 2024.04.02