C# 형변환 Casting

m._.jooong·2023년 2월 20일
0

Unity C#

목록 보기
3/22

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()
{

}

}

0개의 댓글