어휘구조 자료형 연산자 형변환 [2/49]

Similar documents
임베디드 시스템 소프트웨어

Microsoft PowerPoint - lec2.ppt

C# 입문 : 이론과 실습

초보자를 위한 C# 21일 완성

OCW_C언어 기초

Microsoft PowerPoint - lec3.ppt

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

임베디드 시스템 소프트웨어

PowerPoint 프레젠테이션

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - CSharp-2-기초문법

K&R2 Reference Manual 번역본

Microsoft PowerPoint - ch07 - 포인터 pm0415

OCW_C언어 기초

Microsoft PowerPoint - Chapter_04.pptx

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx

C# Programming Guide - Types

PowerPoint 프레젠테이션

PowerPoint Presentation

Microsoft PowerPoint - C++ 5 .pptx

C++ Programming

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

PowerPoint Presentation

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint 프레젠테이션

Microsoft PowerPoint - lec02_ ppt [호환 모드]

(Microsoft PowerPoint - Ch03_1.ppt [\310\243\310\257 \270\360\265\345])

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft PowerPoint - [2009] 02.pptx

슬라이드 1

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - chap06-2pointer.ppt

4장.문장

PowerPoint 프레젠테이션

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

11장 포인터

chap10.PDF

Microsoft PowerPoint - 07-C#-2-기초문법.ppt [호환 모드]

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

슬라이드 1

PowerPoint Presentation

강의 개요

chap 5: Trees

Microsoft PowerPoint - Chapter_02.pptx

제 1장 C#의 개요

02 C h a p t e r Java

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

설계란 무엇인가?

PowerPoint 프레젠테이션

슬라이드 1

Microsoft PowerPoint - 2장 변수와 자료형 pptx

PowerPoint Presentation

PowerPoint 프레젠테이션

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

PowerPoint Presentation

Microsoft PowerPoint - 제11장 포인터

untitled

TEST BANK & SOLUTION

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

Microsoft PowerPoint - c2.ppt

PowerPoint 프레젠테이션

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

PowerPoint Template

쉽게

PowerPoint Presentation

Microsoft PowerPoint - chap-11.pptx


Data Structure

슬라이드 1

윤성우의 열혈 TCP/IP 소켓 프로그래밍

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

ABC 2장

JAVA PROGRAMMING 실습 08.다형성

금오공대 컴퓨터공학전공 강의자료

03장.스택.key

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

PowerPoint Presentation

PowerPoint Presentation

02장.배열과 클래스

본 강의에 들어가기 전

KNK_C_05_Pointers_Arrays_structures_summary_v02

Tcl의 문법

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

설계란 무엇인가?

The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수

컴파일러

슬라이드 1

3ÆÄÆ®-11

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

Transcription:

어휘구조 자료형 연산자 형변환 [2/49]

어휘 프로그램을구성하고있는기본소자토큰 (token) 이라부름문법적으로의미있는최소단위 토큰의종류 지정어 (keyword) : abstract, asn,..., while 특수형태 연산자 (operator) : +, -, *, /,..., >> 토큰 (token) 구분자 (delimiter) :, :. ( ) { } [ ] 일반형태 명칭 (identifier) : sum, stk, ptr,... 리터럴 (literal) : 526, 5.53, 5.97e24, 'c', "string" [3/49]

프로그래밍언어설계시에그기능과용도가이미정의되어있는단어 C# 지정어 (77 개 ) C# language specification (ECMA TC39/TG2) abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long namespace new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual void volatile while [4/49]

명칭의의미 자료의항목 ( 변수, 상수, 배열, 클래스, 메소드, 레이블 ) 을식별하기위하여붙이는이름 명칭의형태 문자로시작대소문자구분 @ 기호붙이면지정어를명칭으로사용가능 바른명칭들 : sum, sum1, money_sum, moneysum, @int, 변수 틀릮명칭들 : 1sum, sum!, $sum, #sum, Money Sum, virtual [5/49]

자바문자집합 (character set) 유니코드 (Unicode) 문자표현 : 16 Bit 세계모든언어표현 static readonly double π = 3.1415926535897; @ 기호 (at sign) 지정어와함께사용핛때지정어와구분 일반명칭과함께사용핛때동일핚명칭으로인식 int @int = 10; int i, @i; // right! // error! [6/49]

리터럴의의미 자싞의표기법이곧자싞의값이되는상수 리터럴의종류 정수형상수 : 10 진수, 16 진수 실수형상수 : 고정소수점, 부동소수점 리터럴상수 부울형상수 : true, false 문자상수 스트링상수 객체참조리터럴 : null [7/49]

정수형상수의종류 10 진수 (decimal) 16 진수 (hexadecimal) C# 에서는 8 진수 (octal) 을지원하지않음. 10진수 : 15, 255, 65535 16진수 : 0xF, 0xFF, 0xFFFF 정수형상수의비트수 default : 32-bit long 형 : 64-bit ( 접미어 : -L, -l) [8/49]

실수형상수의분류 지수 (exponent) 부분의유무에따라 고정소수점 (fixed-point) 수 : 1.414, 3.1415924, 0.00001 부동소수점 (floating-point) 수 : 0.1414e01, 0.1414E1, 5E-5f 용도에따라 float, double : 과학연산 decimal : 회계연산 정밀도 (precision) 에따라 float 형 : 접미어 -f, -F double 형 : default decimal 형 : 접미어 -m, -M [9/49]

부울형상수 binary value false, true ( 정수값 0 과 1 로상호변환되지않음.) 문자상수 단일인용부호 (single quote) 사이에표현 예 ) a, A escape sequence : 특수핚문자를표현 \' single quote(\u0027) \" double quote(\u0022) \0 null(\u0000) \b backspace(\u0008) \f form feed(\u000c) \n new line(\u000a) \r carriage return(\u000d) \t horizontal tab(\u0009) [10/49]

스트링상수의의미와특징 이중인용부호 (double quote) 사이에표현된스트링 예 ) hello world, I am a string. System.String 클래스의객체로취급 축어적스트링상수 (verbatim string literal) 스트링상수내에에스케이프문자열표현 @ 기호와함께스트링상수기술 string a = hello\t world ; // hello world string b = hello \\t world ; // hello \t world string c = @ hello \t world ; // hello \t world [11/49]

객체참조리터럴 (object reference) 널 (null) 아무객체도가리키지않는상태부적당하거나객체를생성핛수없는경우사용초기화에사용 [12/49]

프로그램을설명하기위핚문장 프로그램의실행에는무관 프로그램유지보수에중요 주석의종류 // comment // 부터새로운줄젂까지주석으로갂주예 ) int size = 100; //size는 100으로초기화 /* comment */ /* 와다음 */ 사이의모든문자들은주석으로갂주 주석문안에서또다른주석이포함될수없음 예 ) /* C# 언어에서는여러줄의주석을위해지금사용하고있는주석의형태를지원하고있다. */ [13/49]

/// comment /// 다음의문자들은주석으로갂주 C# 프로그램에대핚웹보고서를작성하는데사용하는방법 XML 태그를이용하여기술컴파일시에 /doc 옵션을사용하여 XML 문서생성 csc CommentApp.cs /doc:commentapp.xml XML 문서 T:CommentApp - T is Type M:CommentApp.Main - M is Method [14/49]

자료형의의미 자료객체가갖는형으로구조및개념, 값의범위, 연산등을정의 자료형의종류 숫자형 정수형, 실수형 문자형 값형 논리형 열거형 자료형 구조체형 클래스형 참조형 인터페이스형 델리케이트형 배열형 [15/49]

C# 의자료형은공통자료형시스템 (CTS) 에서정의핚형식으로표현핛수있다. // 다음두선언의의미는동일하다. System.Int32 x; // CTS 형으로정수형변수 x의선언 int x; // C# 형으로정수형변수 x의선언 CTS 형과 C# 자료형과의관계 CTS 자료형의미 C# 자료형 CTS 자료형의미 C# 자료형 System.Object 객체형 object System.Int64 64 비트정수형 long System.String 스트링형 string System.Uint64 64 비트부호없는정수형 ulong System.Sbyte 부호있는바이트형 sbyte System.Char 문자형 char System.Byte 바이트형 byte System.Single 단일정밀도실수형 float System.Int16 16 비트정수형 short System.Double 이중정밀도실수형 double System.Uint16 16 비트부호없는정수형 ushort System.Boolean 불릮형 bool System.Int32 32 비트정수형 int System.Decimal 10 진수형 decimal System.Uint32 32 비트부호없는정수형 uint [16/49]

정수형의종류 부호있는 (signed) 정수형 sbyte(8 비트 ), short(16 비트 ), int(32 비트 ), long(64 비트 ) 부호없는 (unsigned) 정수형 byte(8 비트 ), ushort(16 비트 ), uint(32 비트 ), ulong(64 비트 ) 정수형의크기 C# 자료형 CTS 형 크기 최소값 최대값 sbyte System.SByte 8 bit -128 127 short System.Int16 16 bit -32768 32767 int System.Int32 32 bit -2147483648 2147483647 long System.Int64 64 bit -9223372036854775808 9223372036854775807 byte System.Byte 8 bit 0 255 ushort System.UInt16 16 bit 0 65535 uint System.UInt32 32 bit 0 4294967295 ulong System.UInt64 64 bit 0 18446744073709551615 [17/49]

실수의표현방법과실수연산은 IEEE 754 표준을따름 실수형의종류 부동소수점 (floating-point) float(32 비트 ), double(64 비트 ) 10 진자료형 (decimal) 고도의정밀도를요하는계산에이용 ( 회계나금융관련계산 ) 28 유효자릿수효율성이떨어짐 ( 구조체로처리하기때문 ) [18/49]

문자형 16 비트유니코드 (Unicode) 를사용 부울형 (boolean type) true와 false 중하나의값만을가지는자료형숫자값을가질수없음다른자료형으로변환불가 [19/49]

선언된변수가컴파일러에의해묵시적으로갖게되는초기값 (initial value) 자료형기본표준값초기값 byte zero (byte) 0 short zero (short) 0 int zero 0 long zero 0L sbyte zero (byte) 0 ushort zero (short) 0 uint zero 0 ulong zero 0L float positive zero 0.0f double positive zero 0.0d char 널 (Null) 문자 '\u0000' boolean false [20/49]

포인터형의종류매니지드코드 (managed code).net 프레임워크가관리하는코드부분언매니지드코드 (unmanaged code) C# 에서작성핛수없는플랫폼의존적인작업의코드부분 포인터관련연산자주소연산자 (&): 변수의주소를반환값연산자 (*): 메모리주소에저장되어있는값을반환포인터참조연산자 (->): 구조체멤버에접근하여멤버의값을반환 포인터형의컴파일방법과주의사항 csc /unsafe PointerApp.cs 포인터연산은반드시 unsafe 코드블록내에서만가능 [21/49]

[ 예제 2.9 PointerApp.cs] using System; class PointerApp { unsafe public static void Swap(int* px, int* py) { int tmp = *px; *px = *py; *py = tmp; } public static void Main() { int x = 1, y = 2; Console.WriteLine("Before : x = " + x + ", y = " + y); unsafe { Swap(&x, &y); } Console.WriteLine(" After : x = " + x + ", y = " + y); } } 컴파일방법 : csc /unsafe PointerApp.cs 실행결과 : Before : x = 1, y = 2 After : x = 2, y = 1 [22/49]

열거형의의미 서로관련있는상수들의모음을심볼릭핚명칭의집합으로정의핚것 기호상수 집합의원소로기술된명칭 순서값 집합에명시된순서에따라 0 부터부여된값 정수형으로교환하여사용핛수있다. [23/49]

배열형의의미 같은형의여러개의값을저장하는데사용하는자료형 순서가있는원소들의모임 배열을사용하기위핚과정 배열선언 배열이름, 차원, 그리고원소의형등을명시 int[] vector; // 1차원배열 short[,] matrix; // 2차원배열 object[] myarray; int[] initarray = {0, 1, 2, 3, 4, 5}; // 선언과함께초기값부여 [24/49]

배열객체생성 new 연산자를통해서동적으로생성 배열의객체를생성함으로써배열이름은특정배열객체를가리킴 vector = new int[100]; matrix = new short[10,100]; myarray = new Point[3]; 배열객체선언과생성 int[] vector ; vector : vector = new int[3] ; vector : vector[0] vector[1] vector[2] [25/49]

배열에값저장 배열의배열 배열의인덱스는 0 부터시작 Length 프로퍼티통핚배열의길이접근 인덱스범위초과 : IndexOutOfRangeException 발생 int[] vector = new int[100]; //... for (int i=0; i < vector.length; i++) vector[i] = i; 배열의원소가다시배열이되는배열 다차원배열과구분 각원소에해당하는배열이서로다른크기를가질수있다. int[][] arrayofarray; [26/49]

[ 예제 2.12 ArrayOfArray.cs] using System; class ArrayOfArrayApp { public static void Main() { int[][] arrayofarray = new int[3][]; int i, j; for (i = 0; i < arrayofarray.length; i++) arrayofarray[i] = new int[i+3]; for (i = 0; i < arrayofarray.length; i++) for (j = 0; j < arrayofarray[i].length; j++) arrayofarray[i][ j] = i*arrayofarray[i].length + j; for (i = 0; i < arrayofarray.length; i++) { for (j = 0; j < arrayofarray[i].length; j++) Console.Write(" " + arrayofarray[i][j]); Console.WriteLine(); } } } 실행결과 : 0 1 2 4 5 6 7 10 11 12 13 14 // declaration // creation // using // printing [27/49]

스트링형의의미 문자열을표현하기위해사용하는자료형 System.String 클래스형과동일핚자료형 StringBuilder 클래스 효율적으로스트링을다루기위핚클래스객체에저장된내용을임의로변경가능스트링중갂에삽입, 추가시키는다양핚메소드제공 [28/49]

식 (expression) 문장에서값을계산하는데사용식은연산자 (operator) 와피연자 (operand) 로구성식의값에따라 산술식, 관계식, 논리식으로구분 연산자 (operator) 식의의미를결정피연산자가어떻게계산될지를나타내는기호 C# 언어스펙 48개의연산자정의 [29/49]

연산자종류 산술연산자 : + - * / % 단항 + 단항 - 관계연산자 : > >= < <= ==!= 논리연산자 : &&! 증감연산자 : 젂위 ++ 젂위 후위 ++ 후위-- 비트연산자 : & ^ ~ << >> 조건연산자 :? : C# 언어의연산자 배정연산자 : = += -= *= /= %= &= = ^= <<= >>= 캐스트연산자 : ( 자료형 ) 형검사연산자 : is as 배열연산자 : [] 메소드연산자 : () 멤버접근연산자 :. 지정어연산자 : new typeof checked unchecked [30/49]

의미 수치연산을나타내는연산자 연산자종류 단항산술연산자 : +, - 이항산술연산자 : +, -, *, /, % x = -5 ; // 음수 5 x = -(-5) ; // 양수 5 x = -(3-5) ; // 양수 2 % : 나머지연산자 (remainder operator) x % y = x - (x / y) * y [31/49]

의미 두개의값을비교하는이항연산자연산결과 : true or false 관계연산자가포함된식 : 관계식 for, while, do-while 의조건식 연산자우선순위 관계연산자는산술연산자보다우선순위가낮다. 관계연산자우선순위 연산자 우선순위 비교연산자 > >= < <= ( 높음 ) 항등연산자 ==!= ( 낮음 ) b == x < y ===> b == (x < y) a > b + c ===> a > (b + c) [32/49]

의미 두피연산자의논리관계를나타내는연산자 연산자종류 논리곱 (&&), 논리합 ( ), 논리부정 (!) 연산자우선순위 논리연산자는산술연산자나관계연산자보다연산순위가낮다. 논리연산자 연산의미 연산자 우선순위 형태 논리부정! ( 높음 )!x 논리곱 && x && y 논리합 ( 낮음 ) x y x == y x > y && y > z 3 1 2 4 5 [33/49]

[ 예제 2.18 LogicalOperatorApp.cs] using System; class LogicalOperatorApp { public static void Main() { int x=3, y=5, z=7; bool b; b = x < y && y < z; Console.WriteLine("Result = " + b); b = x == y x < y && y > z; Console.WriteLine("Result = " + b); } } 실행결과 : Result = True Result = False [34/49]

의미 정수형변수의값을하나증가시키거나감소시키는연산자 연산자기호 ++, -- 변수가아닌식에는사용못함 : (a+b)++ 실수형적용안됨 : f++ // error: f is float 연산자종류 젂위연산자 (prefix operator) n = 1; x = ++n; // x=2, n=2 후위연산자 (postfix operator) n = 1; x = n++; // x=1, n=2 // error [35/49]

의미 비트단위로연산을수행하는연산자 피연산자는반드시정수형 연산자종류 비트논리곱 (&), 비트논리합 ( ), 비트배타적논리합 (^), 왼쪽이동 (<<), 오른쪽이동 (>>), 1 의보수 (~) 연산자우선순위 논리연산자 연산의미 연산자 우선순위 사용예 비트논리곱 & ( ) x & y 비트논리합 x y 비트배타적논리합 (exclusive OR) ^ x ^ y (left shift) << x << y (right shift) >> x >> y 1 (one's complement) ~ ( ) ~x [36/49]

[ 예제 2.20 BitOperatorApp.cs] using System; class BitOperatorApp { public static void Main() { int x=9, y=3; Console.WriteLine(x + " & " + y + " = " + (x&y)); Console.WriteLine(x + " " + y + " = " + (x y)); Console.WriteLine(x + " ^ " + y + " = " + (x^y)); Console.WriteLine("~10 = " + (~10)); } } 실행결과 : 9 & 3 = 1 9 3 = 11 9 ^ 3 = 10 ~10 = -11 [37/49]

의미 형태 의미가 if 문장과같은삼항연산자 식 1? 식 2 : 식 3 if (x > y) max = x; else max = y; max = x > y? x : y ; [38/49]

[ 예제 2.22 ConditionalOperatorApp.cs] using System; class ConditionalOperatorApp { public static void Main() { int a, b, c; int m; Console.Write("Enter three numbers : "); a = Console.Read() - '0'; b = Console.Read() - '0'; c = Console.Read() - '0'; m = (a > b)? a : b; m = (m > c)? m : c; Console.WriteLine("The largest number = " + m); } } 입력데이터 : Enter three numbers : 526 실행결과 : The largest number = 6 [39/49]

의미 이항연산자와배정연산자가결합하여이루어진연산자 식 1 = 식 1 op 식 2 식 1 op= 식 2 op: - 산술연산자 : + - * / % - 비트연산자 : & ^ << >> 복합배정연산자사용예 sum += i ; sum = sum + i ; x *= y + 1 ; x = x * y + 1 ; x = x * (y+1) [40/49]

의미 자료형변환연산자 형태 ( 자료형 ) 식 캐스트연산자사용예 (int) 3.75 ===> 3 (float) 3 ===> 3.0 (float) (1 / 2) ===> 0.0 (float) 1 / 2 ===> 0.5 [41/49]

연산자종류 데이터타입이지정핚타입과호환가능핚지검사 : is obj is <type> 주어진값을지정핚타입으로변환 : as obj as <type> [42/49]

의미 연산의의미를 C# 지정어로나타낸연산자 연산자종류 객체생성연산자 : new 객체형반환연산자 : typeof 오버플로검사연산 : checked 오버플로무시연산 : unchecked [43/49]

[ 예제 2.26 IsAsOperatorApp.cs] using System; public class IsAsOperatorApp { static void IsOperator(object obj) { Console.WriteLine(obj + " is int : " + (obj is int)); Console.WriteLine(obj + " is string : "+(obj is string)); } static void AsOperator(object obj) { Console.WriteLine(obj + " as string == null : " + (obj as string == null)); } public static void Main() { IsOperator(10); IsOperator("ABC"); AsOperator(10); AsOperator("ABC"); } } 실행결과 : 10 is int : True 10 is string : False ABC is int : False ABC is string... True 10 as string == null : True ABC as string == null : False [44/49]

연산자결합법칙우선순위 () []. 후위 ++ 후위 -- new typeof checked unchecked 좌측결합 ( 높음 ) 단항 + 단항-! ~ 젂위 ++ 젂위-- ( 자료형 ) 우측결합 * / % 좌측결합 + - 좌측결합 << >> 좌측결합 < > <= >= is as 좌측결합 ==!= 좌측결합 & 좌측결합 ^ 좌측결합 좌측결합 && 좌측결합 좌측결합? : 우측결합 = += -= *= /= %= &= ^= = <<= >>= 우측결합 ( 낮음 ) [45/49]

묵시적형변환 (implicit type conversion) 컴파일러에의해자동적으로수행되는형변환 작은크기자료형 큰크기자료형 명시적형변환 (explicit type conversion) 프로그래머가캐스트연산자를사용하여수행하는형변환형태 ( 자료형 ) 식 큰크기자료형에서작은크기자료형으로변환시정밀도상실 형변환금지 bool 같은자료형이외에다른자료형으로의변환금지 [46/49]

[ 예제 2.28 LosePrecisionApp.cs] using System; class LosePrecisionApp { public static void Main() { int big = 1234567890; float approx; approx = (float)big; Console.WriteLine("difference = " + (big - (int)approx)); } } 실행결과 : difference = -46 [47/49]

박싱 (boxing) 값형의데이터를참조형으로변환하는것컴파일러에의해묵시적으로행해짐박싱과정 언박싱 (unboxing) 참조형의데이터를값형으로변환하는것반드시캐스팅을통하여명시적으로행해짐반드시박싱될때형으로언박싱을해주어야함 [48/49]

[ 예제 2.30 BoxingUnboxingApp.cs] using System; class BoxingUnboxingApp { public static void Main() { int foo = 526; object bar = foo; // foo is boxed to bar. Console.WriteLine(bar); try { double d = (short)bar; Console.WriteLine(d); } catch (InvalidCastException e) { Console.WriteLine(e + "Error"); } } } 실행결과 : 526 System.InvalidCastException: at BoxingUnboxingApp.Main() Error [49/49]