※ 이전 블로그의 포스트임(2016/11/1)
C#에는 C 언어와 유사한 기본 자료형이 존재한다. 이름도 어딘가 비슷하다. 예를 들면 int, uint 같은 자료형이 있다. C 에는 uint 가 없다고 생각할 수 있는데, C99 표준에 따라 int32_t, uint32_t 라는 자료형이 존재한다.
다만, C 에서는 uint32_t 가 예약어로 지정된 것이 아니라 stdint.h 라는 표준 헤더에 의해
typedef int int32_t;
typedef unsigned int uint32_t;
와 같이 자료형 정의 형태로 지원이 되고 있다.
C#도 이와 비슷하게 실제 자료형의 이름은 System.Int32, System.UInt32 와 같이 닷넷에서 제공하는 이름이 따로 존재하며 int, uint 는 이들의 alias 이다. 이런 부분들이 C 와 참 많이 닮아서 재미있다.
공부를 할겸하여 C 와 C# 의 기본 자료형 비교표를 만들어 본다.
크기 (byte) | .NET | C# | C | C++ |
---|---|---|---|---|
1 | System.SByte | sbyte | int8_t | " |
1 | System.Byte | byte | uint8_t | " |
2 | System.Int16 | short | int16_t | " |
2 | System.UInt16 | ushort | uint16_t | " |
4 | System.Int32 | int | int32_t | " |
4 | System.UInt32 | uint | uint32_t | " |
8 | System.Int64 | long | int64_t | " |
8 | System.UInt64 | ulong | uint64_t | " |
4 | System.Single | float | float | " |
8 | System.Double | double | double | " |
16 | System.Decimal | decimal | N/A | " |
2 | System.Char | char | ≒ wchar_t ※ | " |
Variable-Length | System.String | string | N/A | N/A |
1 | System.Boolean | bool | N/A | bool ※ |
※ C/C++ 언어에서 bool, wchar_t 는 플랫폼이나 컴파일러마다 크기가 다를 수 있음.
책을 읽어보니 C# 에서는 downsizing 즉, 아래와 같은 경우
int a = 262144;
short b = a;
2번 줄에서 빌드 에러가 난다고 한다. 반면, C/C++ 에서는 기본적으로 묵시적 casting 이 이루어지며, 특별히 옵션을 주어야 warning/error 로 만들 수 있다.
C#의 char 형은 C의 char(int8_t) 와는 다르다. JAVA의 그 것과 동일하다고 보면 된다. 아예 언어 자체가 유니코드만 쓰겠다는 의지의 표현인데... C/C++ 숙련공인 나로서는 적응하기 참 난해할 것 같다.
'Book Study > 시작하세요! C# 6.0 프로그래밍' 카테고리의 다른 글
교재(시작하세요 C# 6.0)에 대한 고찰 #1 - 첨자/색인(index/subscript) (0) | 2020.02.09 |
---|---|
C#의 변수, 배열, 범위(scope), 참조(reference) #1 (0) | 2020.02.09 |
MonoDevelop을 써볼까. (inc. 설치 방법) (0) | 2020.02.09 |
닷넷 프레임워크(.NET Framework) 용어 한줄 정리 (0) | 2020.02.09 |
C# 스터디를 시작하려고 한다. (0) | 2020.02.09 |