- 헝가리안 표기법 : 자료형의 표시를 접두어로..
ex) int
num;
int int num;
bool
bFlag;
C#) 인터페이스에서만 사용.. IHuman
- 파스칼 표기법 : 각 단어의 첫글자를 대문자로..
ex) studentname
student_name
StudentName
C#) 클래스명, 메서드명, 네임스페이스명, 구조체명 등..
- 카멜 표기법 : 파스칼 동일..
단 첫번째 문자는 소문자로 시작
ex) studentName
C#) 변수명
형변환(Type Casting Operation)
- 변수 = 데이터;
- **조건 왼쪽의 변수 타입과 오른쪽의 데이터타입은 동일!!
- byte b1 =
256;//Error
- int n1 = "홍길동";
좌우측의 데이터 타입이 달라질 경우...할일
- 명시적(Explicit) 형변환
- 암시적(Implicit) 형변환
암시적 형변환
- 큰형 = 작은형
- 별다른 표현없이 자동으로 발생
- 100% 안전
명시적 형변환
- 작은형 = 큰형
- 반드시 표현을 사용해서 발생
- ()연산자 사용
- 경우에따라 성공 or 실패
- Overflow / Underflow -> Overflow(오버플로우)
- 명시적 형변환은 올바르게 처리될 수 있지만, 오버플로우가 발생할
가능성도 있다.!!
- 오버플로우가 발생해도 에러발생이 일어나지가 않는다****
데이터 형태에따라 복사하는것엔 문제가 없다. 하지만 데이터 복사시에
큰범위 형태에서 작은 범위로 형변환을 적용시에 큰범위에서 작은 범위로 변환시 데이타 형태에 넘치지 않는한 형변환이 가능하다.
using System;
namespace Csharp
{
class Ex09_Casting
{
public static void Main(string[] args)
{
//작은형 숫자타입
//큰형 숫자타입
//암시적 형변환
// -큰형(공간) = 작은형(데이터)
byte b1 = 100;
short s1;
//(short)형변환
s1 = (short)b1;//복사 100% 성공 컴파일러 내부에서 (short)를 써준다.
Console.WriteLine(b1);
Console.WriteLine(s1);
}
}
}
using System;
namespace Csharp
{
class Ex11_Casting
{
public static void Main(string[] args)
{
//명시적 형변환
// - 작은형 = 큰형
byte b1;
short s1 = 300;
b1 = (byte)s1;//형변환 컴파일러는 문법만 검사한다. 한문장 문장마다 문법이 어긋난게
있는 없는지만 판단한다.
Console.WriteLine(b1);
Console.WriteLine(s1);
long l1 =
200000000000;//2백억
int n1;
n1 = (int)l1;
Console.WriteLine("원금 : " + l1);
Console.WriteLine("이체후 : " + n1);
//숫자 형변환시에는 비트 단위로 복사가 되기 때문에 첫번째 비트가 0이어서 -형태로 값이 출력된것을 확인할수 있다.2012-02-08
}
}
}
using System;
namespace Csharp
{
// Ex11_Overflow.cs
class Ex11_Overflow
{
public static void Main(string[] args)
{
byte b1;
short s1 = 200;
checked
{
b1 = (byte)s1;
b1 = (byte)s1;
b1 = (byte)s1;
}
//형변환 -> 오버플로우
//1. 오버플로우를 에러로 처리X -> 강제로
에러가 나겠끔
//2. 에러처리
//검사가 많아질수록 좋지 않다.속도면에서
많이 떨어짐
b1 = checked((byte)s1);
Console.Write(s1);
Console.Write(b1);
}
}
}
using System;
namespace Csharp
{
// Ex11_Overflow.cs
class Ex11_Overflow
{
public static void Main(string[] args)
{
byte b1;
short s1 = 200;
checked
{
b1 = (byte)s1;
b1 = (byte)s1;
b1 = (byte)s1;
}
//형변환 -> 오버플로우
//1. 오버플로우를 에러로 처리X -> 강제로
에러가 나겠끔
//2. 에러처리
//검사가 많아질수록 좋지 않다.속도면에서
많이 떨어짐
b1 = checked((byte)s1);
Console.Write(s1);
Console.Write(b1);
}
}
}