using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 형변환 (Casting)
// 1, 자동 형변환
// 서로 다른 데이터형 변수에 대입하거나 연산을 할 때 자동으로 형변환 되는 것
// 단, 서로 다른 데이터형 일 때 큰쪽으로만 상승 변환되는 특징이 있다.
// 데이터형의 크기 순서
// double > float > ulong > long > uint > int > ushort > short > char
// 2, 수동 형변환
public class Test_4 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
//1, 자동 형변환
int ee = 346;
float ff = ee; //자동 형변환 346.0f
//int ii = ff; //C#에서는 큰데이터형을 작은데이터형에 자동으로 대입할 수 없다.
Debug.Log("ee = " + ee + ", ff = " + ff);
// "ee = " + "346" + ", ff = " + "346"
// "ee = 346, ff = 346"
long aaa = 123L; //8바이트짜리 정수형을 담는 데이터형 변수 선언
Debug.Log(aaa + " : " + sizeof(long));
aaa = ee; //자동 형변환 가능 346L
//ee = aaa; //자동 형변환 불가능
//2, 수동 형변환
float a_gg = 12.34f;
int a_hh = (int)a_gg; //<-- 수동 형변환(강제 형변환)
Debug.Log("a_hh : " + a_hh);
//수동 형변환 응용 예
float xxx = 123.456f;
int MyInt = (int)xxx;
float MyFloat = xxx - (int)xxx; // 123.456f - 123 --> 123.456f - 123.0f
Debug.Log(MyInt + " : " + MyFloat);
//숫자형태 --> 문자열형태 변환
int ABC = 123;
string CBA = "123";
int XYZ = 789 + ABC;
string SSS = "789" + ABC; //.ToString(); 가 생략되어 있다.
Debug.Log(XYZ + " : " + SSS); // 912 : 789123
//CBA = (string)ABC; //자동형변환, 수동형변환 다 안된다.
CBA = ABC.ToString(); //"123" //정수형 --> string 형 변환하는 방법
//문자열형태 --> 숫자형태
string EEE = "123";
//int FFF = (int)EEE; //자동형변환, 수동형변환 다 안된다.
//int FFF = int.Parse(EEE); //좀 위험한 함수, 특수 문자가 끼어 있으면 에러
//Debug.Log(FFF);
//int.TryParse() //안전한 함수
int FFF = 0;
int.TryParse(EEE, out FFF);
Debug.Log(FFF);
FFF = FFF + 5000;
Debug.Log(FFF);
string mmm = "123.456";
float ppp = 0.0f;
float.TryParse(mmm, out ppp);
Debug.Log("ppp : " + ppp);
// 응용문제
Debug.Log("<구구단 7단>");
// 7 * 1 = 7
// 7 * 2 = 14
// :
// :
// 7 * 9 = 63
int Dan = 7;
int Idx = 1;
Debug.Log(Dan + " * " + Idx + " = " + (Dan * Idx));
Idx = 2;
Debug.Log(Dan + " * " + Idx + " = " + (Dan * Idx));
Idx = 3;
Debug.Log(Dan + " * " + Idx + " = " + (Dan * Idx));
Idx = 4;
Debug.Log(Dan + " * " + Idx + " = " + (Dan * Idx));
Idx = 5;
Debug.Log(Dan + " * " + Idx + " = " + (Dan * Idx));
Idx = 6;
Debug.Log(Dan + " * " + Idx + " = " + (Dan * Idx));
Idx = 7;
Debug.Log(Dan + " * " + Idx + " = " + (Dan * Idx));
Idx = 8;
Debug.Log(Dan + " * " + Idx + " = " + (Dan * Idx));
Idx = 9;
Debug.Log(Dan + " * " + Idx + " = " + (Dan * Idx));
}
// Update is called once per frame
void Update()
{
}
}