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 데이타 타입설명
boolSystem.BooleanTrue or False
byteSystem.Byte8비트 unsigned integer
sbyteSystem.SByte8비트 signed integer
shortSystem.Int1616비트 signed integer
intSystem.Int3232비트 signed integer
longSystem.Int6464비트 signed integer
ushortSystem.UInt1616비트 unsigned integer
uintSystem.UInt3232비트 unsigned integer
ulongSystem.UInt6464비트 unsigned integer
floatSystem.Single32비트 single precision 부동소수점 숫자
doubleSystem.Double64비트 double precision 부동소수점 숫자
decimalSystem.Decimal128비트 Decimal
charSystem.Char16비트 유니코드 문자
stringSystem.String유니코드 문자열
objectSystem.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는 이후 강좌에서 다시 언급하겠습니다.

안녕히가세요!