하지만 반대로 long 형식의 변수를 int 형식의 변수에 저장하려면 다음 샘플 코드처럼 명시적으로 (int)를 붙여 long을 int로 변경해야 합니다. 명시적 형 변환은 캐스팅(casting)이라고도 합니다.
> long number1 = 1234; > int number2 = (int)number1; //long 형식의 변수를 int 형식의 변수로 변환해서 저장 > number2 1234
이 경우에는 데이터가 손실되어 엉뚱한 데이터가 저장될 수도 있습니다. 에러는 발생하지 않지만 잘못된 값이 저장되는 경우를 살펴보겠습니다. 다음 내용을 입력한 후 실행해 보세요. 참고로 소스 코드에서 변수 이름은 L의 소문자인 l과 I의 소문자인 i를 사용했습니다.
long을 int로 명시적 형 변환: TypeConversionError.cs
using System;
class TypeConversionError { static void Main() { long l = long.MaxValue; //① long 형식 변수의 가장 큰 값을 l 변수에 저장 Console.WriteLine($"l의 값 : {l}"); int i = (int)l; //② l 변수 값을 int 형식으로 변환하여 i 변수에 저장 Console.WriteLine($"i의 값 : {i}"); } }
실행 결과
l의 값 : 9223372036854775807 i의 값 : -1