Q & A

시삽: 레드플러스 님 
게시판 이동:
 제목 : Re : 교재 문의 p91
글번호: 1088
작성자: 레드플러스
작성일: 2023/04/18 오전 12:52:00
조회수: 649

안녕하세요.

C#에서 리터럴의 타입은 기본적으로 정수형(int)이나 실수형(double)일 수 있습니다. 그러나 리터럴의 타입을 명시적으로 지정할 수도 있습니다.

리터럴 타입과 변수 타입이 일치하지 않을 때, 일반적으로 형변환이 필요한데 이는 자동 형변환(암시적 형변환)이나 명시적 형변환을 사용하여 수행됩니다.

  • long a = 1234; 이 경우, 리터럴은 int 타입이고 변수는 long 타입입니다. int에서 long으로의 형변환이 자동으로 일어나기 때문에 에러가 발생하지 않습니다.
  • long a = 1234L; 이 경우, 리터럴은 long 타입이므로 이미 변수 타입과 일치합니다.
  • float f = 12.34; 이 경우, 리터럴은 double 타입이고 변수는 float 타입입니다. double에서 float으로 형변환 시 정보 손실이 발생할 수 있으므로 명시적 형변환이 필요합니다.
  • float f = 12.34F; 이 경우, 리터럴은 float 타입이므로 변수 타입과 일치합니다.
  • byte b = 123; 이 경우, 리터럴은 int 타입이고 변수는 byte 타입입니다. byte의 허용 범위는 0 ~ 255이므로, 리터럴 값이 byte의 범위 내에 있기 때문에 자동으로 형변환되어 에러가 발생하지 않습니다.

C# 교과서 86 페이지에 보면, byte b = 256; 형태로 입력하면 에러가 납니다. 하지만, byte b = 123; 코드는 에러가 나지 않습니다. 

결론적으로, 변수 선언부의 데이터 타입과 리터럴 타입이 항상 일치할 필요는 없습니다. 자동 형변환이 가능한 경우에는 암시적 형변환이 이루어질 수 있고, 그렇지 않은 경우 명시적 형변환을 사용하여 데이터 타입을 변환할 수 있습니다.

감사합니다.
 

 


On 2023-04-17 오후 10:20:00, '백동규' wrote:

 

 


교재에서 리터럴 부분을 공부하다가 질문이 있어서 문의드립니다.

정수형 리터럴은 int 실수형 리터럴은 double이 기본값이라

long a = 1234;  (이 경우는 리터럴  int)  리터럴의 값이 형보다 작으므로 자동으로 형변환되어

변수에 저장되기 떄문에 에러 발생 하지 않음

long a = 1234L; (이 경우는 리터럴 long) 

float f = 12.34(이 경우는 리터럴 double)  리터럴의 값이 float 보다 크므로 에러 발생 명시적 형변환 필요

float f = 12.34F(이 경우는  리터럴 float)

 

byte b = 123; (이 경우 리터럴 int) 리터럴의 값이 형보다 큰데 에러가 발생하지 않아서 

질문 드립니다 왜 그런가요? 

무조건 변수 선언부에 있는 데이터 타입과 리터럴 타입이 일치 해야하나요?

 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트
  wcdls
  2023-04-17 오후 4:24:02
알려주셔서 감사합니다
  Administrator
  2023-04-17 오후 5:43:40
네, 언제든 궁금하신 내용 있으면 문의주세요.

그리고, 유튜브의 C# 교과서 마스터하기 강좌는 꼭 함께 시청하세요.


(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 문의 드립니다. (1) - 태형 2023-04-18 848
  교재 문의 p91 - 백동규 2023-04-17 742
현재글 Re : 교재 문의 p91(2) - 레드플러스 2023-04-18 649
다음글 오탈자 문의 p98 - 백동규 2023-04-17 804
 
손님 사용자 Anonymous (손님)
로그인 Home