Microsoft MVP성태의 닷넷 이야기
Char 타입은 문자열 기본 타입이 맞나요? [링크 복사], [링크+제목 복사]
조회: 1654
글쓴 사람
jw (jaewon.lee at kohyoung.com)
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)

안녕하세요.

시작하세요 C# 8.0 책을 보유중입니다.
43페이지를 보면 char타입은 문자형 기본 타입이라고 소개가 되는데요.

msdn을 찾아보면 정수형 기본 타입이라고 나옵니다.
https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/builtin-types/char

그리고 뇌를 자극하는 c# 5.0 프로그래밍 책을 보아도 char은 정수형 계열 형식이라고 소개되네요.

뭐가 맞는건지 혼란스럽습니다..
답변 부탁드립니다.


[연관 글]






[최초 등록일: ]
[최종 수정일: 5/15/2023]


비밀번호

댓글 작성자
 



2023-05-15 02시00분
언급하신 문서에 어디서 "정수형"이라고 하는지 인용해 주실 수 있을까요?

해당 문서의 좌측 트리 체계를 보면, "값 형식"의 하위로 "정수 숫자 형식", "부동 소수점 숫자 형식", "기본 제공 숫자 변환", bool, char, "열거형 형식", "구조체 형식", "튜플 형식", "Nullable 값 형식"으로 나뉩니다.

제 경우에는 그중에서 "char"을 "문자형"으로 소개한 것입니다.

-----------------

참고로, 엄밀히 따지면 char을 정수형으로 봐도 무방합니다. 어차피 표현 범위로 보면 2바이트이기 때문에 short/ushort와 동일합니다. 하지만, 정수형으로 볼 수 없는 것이, 가령 아래와 같은 코드는,

short s = 50;
char c = 50;

'char c = 50;' 코드에서 아래와 같은 오류가 발생합니다.

error CS0266: Cannot implicitly convert type 'int' to 'char'. An explicit conversion exists (are you missing a cast?)

만약 순수하게 char을 정수형으로 분류했다면, 위의 코드를 굳이 (경고도 아닌) 오류로 처리하진 않았을 것입니다.

-------------------

그 외에도 해당 문서의 "정수 숫자 형식"을 보시면,

정수 숫자 형식(C# 참조)
; https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/builtin-types/integral-numeric-types

char는 나열되지 않았습니다.
정성태
2023-05-15 02시07분
8.3.6 Integral types
; https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/types#836-integral-types

"
The char type is classified as an integral type, but it differs from the other integral types in two ways: ...[생략]...
"

위의 문서를 보니까, integral types로 명시하고 있군요.

그렇긴 한데, (위의 첫 번째 덧글에서 언급한 이유로) 일단 제 책에서는 좀 더 구체적인 의미를 위해 문자형 기본 타입으로 명시하겠습니다.

하지만, 이러한 혼란을 없애기 위해 다음 개정판부터는 위에 대한 사항을 명시하도록 하겠습니다.

의견 주셔서 감사합니다. ^^
정성태

[1] 
NoWriterDateCnt.TitleFile(s)
12이종효12/21/2023691String.Format은 정적 메서드 아닌가요? [1]
10다크파이썬8/24/20231912C# 11 개정판 계획이 있으신가요? [1]
9유동한8/7/20231442.NET Framework의 BCL에 대하여 질문드립니다. [1]
5김태원5/28/20231857C# 이해안가는부분 [1]
4리세5/28/20231689안녕하세요. c#의 워커스레드에 대해 질문을 드립니다. [3]
3영귤5/19/20231457비동기 호출의 병렬 처리 질문입니다. [2]
2jw5/15/20231654Char 타입은 문자열 기본 타입이 맞나요? [2]
[1]