◎위챗 : speedseoul
https://pubul.tistory.com/m/14
*이 강좌는 C를 기본적으로 알고 있고, 객체 지향 언어가 처음인 사람을 대상으로 작성되었습니다.
C에서는 변수 선언이 다음과 같이 됩니다.
C#도 동일합니다.
int a = 5;
다음과 같이
자료형 변수 = 값;
로 사용합니다.
C에서 사용되는 모든 자료형은 C#에서도 대동소이 합니다.
그런데 여기서, 차이가 있는 자료형이 하나 있습니다.
//잠시, C에 대한 설명을 해봅시다//
char을 기억하시나요?
c에서는 char은 0~256의 숫자 하나를 저장하는 자료형입니다.
네. 그냥 C에서는 char이 하나의 값입니다.
그래서 이걸 문자로 취급할지, 숫자로 취급할지를 printf에서 %d와 %c로 정해준 거고요.
C에서는 출력은 문자지만, 실제로는 숫자라는 소리입니다.
그래서, char라는 하나의 자료형이
1.'우리 반 학생수'처럼 적은 숫자나
2.'A'같은 문자를
둘 다 표현하는데 쓰인다는 문제점이 있습니다.
그렇다면, 어떤 char형 변수에 들어있는 65라는 값이
학점인 'A'를 의미하는건지, 점수인 65를 의미하는건지 알 턱이 없습니다.
이런 문제점 때문에, C#에서는 언어차원에서 char에 숫자를 직접 대입하는걸 막아버렸습니다.
즉, C#에서는 char는 '문자'의 자료형입니다.
어라? 그럼 char과 똑같은 크기의 숫자를 저장하고싶다면 어떡하죠?
그래서 byte라는 자료형이 추가로 존재합니다.
즉,
byte: 1바이트 숫자 자료형
char: 1바이트 문자 자료형
이렇게 되는겁니다.
C# 데이타 타입 | .NET 데이타 타입 | 설명 |
---|---|---|
bool | System.Boolean | True or False |
byte | System.Byte | 8비트 unsigned integer |
sbyte | System.SByte | 8비트 signed integer |
short | System.Int16 | 16비트 signed integer |
int | System.Int32 | 32비트 signed integer |
long | System.Int64 | 64비트 signed integer |
ushort | System.UInt16 | 16비트 unsigned integer |
uint | System.UInt32 | 32비트 unsigned integer |
ulong | System.UInt64 | 64비트 unsigned integer |
float | System.Single | 32비트 single precision 부동소수점 숫자 |
double | System.Double | 64비트 double precision 부동소수점 숫자 |
decimal | System.Decimal | 128비트 Decimal |
char | System.Char | 16비트 유니코드 문자 |
string | System.String | 유니코드 문자열 |
object | System.Object | 모든 타입의 기본 클래스로 모든 유형을 포함할 수 있음 |
C에서 못보던게 몇 개 있습니다.
하나는 bool
하나는 sbyte
하나는 decimal
하나는 string
하나는 Object
이중 sbyte는, 앞에서 얘기했던 byte의 부호 버전에 불과합니다.
c에서는 char가 문자와 짧은 숫자를 모두 표현했기 때문에, 0~255의 범위를 가졌었습니다. 아스키 코드가 그 범위에 있으니까 말이죠.
하지만 C#으로 오면서, byte와 char이 분리되었고, byte도 0~255의 범위를 갖습니다.
여기서 음수를 표현할 수 없다는 문제가 있어서, signed byte, 즉 부호가 있는 byte 자료형인 sbyte를 정의한겁니다.
sbyte는 -128~127의 범위를 갖습니다.
C가 나올때에 비해서는 컴퓨터의 성능이 향상됐기때문에, 좀더 큰 자료형을 언어 단위에서 정의해줍니다.
C에서는 4바이트 짜리였던 long이 8바이트 자료형으로 승격(?)됐고
16바이트 자료형인 decimal이 추가되었습니다.
나머지는 다음시간에!
bool, string, Object는 이후 강좌에서 다시 언급하겠습니다.
안녕히가세요!