1. 오늘 학습 키워드
2. 오늘 학습 한 내용을 나만의 언어로 정리하기
변수: 데이터가 안전하게 살 수 있는 집의 개념
데이터 형식 변수이름 ;
으로 표기하며, 변수이름은 임의로 만들지만, 코딩스탠다드의 네이밍 규칙을 따르는것이 협업에 용이하다.
영어 대/소문자
숫자 (맨 앞에 오면 에러가 납니다.)
언더바 _
데이터 형식에는
변수를 처음 만드는것을 '선언한다' 라고 한다. 변수에 데이터를 넣어주는 것을 '할당한다' 라고 한다.|
그리고 맨처음 데이터를 할당하는것을 '초기화한다' 라고한다.
예: Int x = 10 ;
를 함으로서 선언,할당, 초기화를 하였다.
이때 변수에 할당된 데이터(예시에서는 10)를 “데이터”, “값”, “리터럴” 등으로 표현가능하다.
변수의 데이터형식에 쓰이는 자료형
숫자
1. int : 정수 : 소숫점이 없는 숫자로 ... -2, -1, 0 ,1 ,2, ... 같은 숫자들이다.
2. float : 실수 (소숫점7자리까지) : 0.4, 1.7, 10.4, -5.7 등의 숫자가 실수에 포함됌,
float exp =56.5f; 에서 뒤에 f 를 붙인다. float speed = 56.5; 처럼 표기하면 에러가 생긴다.
3. double: 실수 (소숫점15~16자리까지)
double exp =56.5d;
double exp =56.5;
둘다 가능하다 뒤에 d를 붙이든 생략하든 double로 인식한다.
※ double이 표현할 수 있는 숫자는 더많으나, 쓰는데 더 많은 메모리를 사용하기때문에 효율을 위해서
웬만하면 float을 사용한다.
문자열과 문자
1. string :
여러글자가 합쳐졌을때 문자열이라한다. " " 로 데이터를 쓴다.
예: string codingClub ="팀스파르타";
2. char:
문자를 표현하는 자료형이다. ' '로 데이터를 쓴다.
예: char team_1 ='팀';
자세히 항목을 리스트업하자면 아래와 같다.
|
자료형
|
값
|
특징
|
기본값
|
크기
|
|
bool
|
true , false
|
|
false
|
1 byte
|
|
string
|
문자열
|
" " 로 감싸야 함
|
null
|
계속 변함
|
|
char
|
문자
|
' ' 로 감싸야 함
|
'\0'
|
2 byte
|
|
sbyte
|
8bit 정수
|
-128 ~ 127
|
0
|
1 byte
|
|
byte
|
8bit 정수 (부호 없음)
|
0 ~ 255
|
0
|
1 byte
|
|
short
|
16bit 정수
|
–32,768 ~ 32,767
|
0
|
2 byte
|
|
ushort
|
16bit 정수 (부호 없음)
|
0 ~ 65,535
|
0
|
2 byte
|
|
int
|
정수
|
–2,147,483,648 ~ 2,147,483,647
|
0
|
4 byte
|
|
uint
|
정수 (부호 없음)
|
0 ~ 4,294,967,295
|
0
|
4 byte
|
|
long
|
64bit 정수
|
–9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
|
0
|
8 byte
|
|
ulong
|
64bit 정수 (부호 없음)
|
0 ~ 18,446,744,073,709,551,615
|
0
|
8 byte
|
|
float
|
실수
|
1.5E-45 ~ 3.4E+38 (7자리 유효) 0.0000001f 뒤에 f를 붙여 야함
|
0
|
4 byte
|
|
double
|
실수
|
5.0E-324 ~ 1.7E+308 (15자리 유효) 0.000000000000001d 뒤에 d를 붙여야 하지만 붙이지 않더라도 double로 인식
|
0
|
8 byte
|
|
Decimal
|
실수
|
±1.0 x 10-28 ~ ±7.9228 x 1028 28-29개의 자릿수
|
0
|
16 byte
|
위 표를 보면 byte 크기가 다르다. 따라서 아까 말했듯, 8byte의 double을 쓰는것보다 4byte의 float을 쓰는게 메모리에 더 효율적이다.
int 값이 대략 21억까지 표현이 되는데 해당 숫자를 넘긴 값이 출력되면 오류나듯 다른 숫자가 출력되는 경우가 있었다. 표현 할 수 있는 숫자 범위를 넘어서서 정확한 값이 출력되지않는 것이다.
변수는 데이터형식과 데이터가 형식이 맞아야 된다. 그렇지않다면 에러가 발생한다.

변수는 한번 선언 및 할당 후에, 바꿔서 저장할 수 있다.

형 변환 (casting)
변수를 사용하면서 해당 변수의 자료의 형태를 변환해야 할 상황에 따라 쓰인다.
3가지 방법이 있다.
1. 숫자를 다른 형태의 숫자로 변환
2. 다른 자료형을 문자로 변환
3. 문자를 다른 자료형으로 변환
먼저
1. 숫자 -> 다른 형태의 숫자로 변환 방법
float → int
int x = 10;
float y = 10.0f
int z = x + (int)y;
int → float
int x = 10;
float y = 10.0f
float z = (float)10 + y;
단 데이터 손실이없다면, 괄호 형태를 명시하지않아도됌.
float 1.5f 를 int1로 바꾸는데 있어선 0.5값이 사라지니 명시해야하나, float 1f 에서 int1 이라면 괜찮음.
따라서
int x = 10;
float y = 10f;
int z = x + y ;
float a = x + z ;
2. 숫자 또는 bool 을 문자로 변환
간단하게 뒤에 .ToString()를 붙이면 가능하다.
int x = 10;
string xstr = x.ToString();
할시에, "10" 으로 인식
bool y = true;
string ystr = y.ToString();
할시에, true 가아닌 "true" 로 인식
3. 문자를 다른 자료형으로 변환
세가지 방법 존재.
- convert 클래스 사용
-Parse() 함수 사용
-TryParse() 함수 사용
먼저 convert 사용법
String iStr = "10";
int x;
x= Convert.ToInt32(iStr);
하면 x : 10
String bStr = "true";
bool b;
b = Convert.ToBoolean(bStr);
하면 b : true
이런식으로 사용한다.
형변환 리스트에는 다음과 같다.
Convert.ToBoolean() 부울형태(참,거짓)
Convert.ToByte() 유니코드 정수형태
Convert.ToChar() 유니코드 형태 (문자)
Convert.ToDecimal() decimal 숫자형태
Convert.ToDouble() 실수(15~16자리) 형태
Convert.ToInt16() 16비트 부호 있는 정수: –32,768 ~ 32,767
Convert.ToInt32() 32비트 부호 있는 정수: –2,147,483,648 ~ 2,147,483,647
Convert.ToInt64() 64비트 부호있는 정수
Convert.ToSbyte() 8비트 부호 있는 정수
Convert.ToSingle() 단정밀도 부동 소숫점 32비트 float , 즉 실수( 7자리)
Convert.ToString() 문자열
Convert.ToUInt16() 16비트 부호 없는 정수
Convert.ToUInt32() 32비트 부호 없는 정수
Convert.ToUInt64() 64비트 부호 없는 정수
Convert 클래스를 사용하기 위해선 네임스페이스인 'System'을 써야하므로,
코드 상단에 " using System" 을 적어놓는게 좋다. 아니라면 System.Convert.ToInt32()와 같이 전부 명시해야만한다.

그다음 Parse() 함수 사용법
String iStr = "10";
int x;
x = int.Parse(iStr);
할 경우 x: 10
문제는 에러가 발생하는 경우인데, 변환할 수 없는 값일때이다. 예를들어
String iStr = "10.xxx";
int x;
x = Convert.ToInt32(iStr); 혹은
x= int.Parse(iStr); 라고 하였을때
iStr가 정수가 아니기때문에 에러가 발생한다.
이를 대처하기 위해
TryParse() 함수를 사용가능하다.
TryParse()는
out 개념이 들어간다
반환값으로 캐스팅한 값을 받지않으며,
반환값으로 bool만 받아 캐스팅이 성공했는지 여부를 알려준다.
string iStr = "10";
int x;
bool isSuccess;
isSuccess = int.TryParse(iStr, out x);
isSuccess : true 가 된다.
그러나
string bStr = "testtest" ;
bool b:
bool isSuccess;
isSuccess = bool.TryParse(bStr, out b);
이면 bStr의 값이 bool로 변환이 안되기때문에,
isSuccess = false 가 된다.
응용해보자면
string iStr = "10.0";
int x;
int.TryParse(iStr, out x);
Console.WriteLine(x);
의 경우 0의 값을 낸다. 왜일까?
10.0은 소수점이 포함된 문자열이라 int로 변환 하기를 실패했기 때문이에 결과값을 false로 반환 한것이며
out 매개변수 x의 기본값인 0이 할당 되었기 때문이다. 만약에 10.0이 아닌 10이었다면
10을 그대로 호출했을 것이다.
string iStr = "10.2";
float x;
float.TryParse(iStr, out x);
Console.WriteLine(x);
이렇게 하면 10.2를 호출한다.
기본값은 아래와 같다.
- 숫자형 (정수 및 실수)
- int, long, short, byte, sbyte, ushort, uint, ulong: 모두 0
- float: 0.0f
- double: 0.0
- decimal: 0.0m
- 문자형
- char: '\0' (널 문자)
- 논리형
- bool: false
- 참조형
- string, object, 배열, 클래스 등: null
즉 정리하자면 캐스팅에 성공하면 해당값을 out 하려는 매개변수의 자료형에 맞춰서 그대로, 실패하면 out 하려는 매개변수의 자료형의 기본값을 호출하는 것이다.
3. 학습하며 겪었던 문제점 & 에러
- 문제&에러에 대한 정의
- 내가 한 시도 - 해결 방법
- 새롭게 알게 된 점
- 이 문제&에러를 다시 만나게 되었다면?
4. 내일 학습 할 것은 무엇인지
C# 문법 기초 추가 복습, 정리
기초 수학공부
'Unity 개발 공부' 카테고리의 다른 글
| [내일배움캠프 사전캠프] 4일차 C# 캐스팅, 제어문, 반복문 프로그래밍 연습. (25.03.26) (1) | 2025.03.26 |
|---|---|
| [내일배움캠프 사전캠프] 3일차 C# 문법기초 클래스, 함수, 변수 파헤치기 (25.03.24) (0) | 2025.03.24 |
| [내일배움캠프 사전캠프] 3일차 C# 문법기초 제어문,배열, 함수, 클래스와 객체 (25.03.24) (0) | 2025.03.24 |
| [내일배움캠프 사전캠프] 2일차 C# 문법기초 연산자,비트연산 (25.03.21) (0) | 2025.03.20 |
| [내일배움캠프 사전캠프] 0일차 시작. Unity 조사하기 (0) | 2025.03.19 |