C#) 메서드와 매개변수
·
Programming/C C# C++
이번에 알아볼 것은 바로 메서드이다. C#에서는 메서드라 부르고 C/C++에서는 함수라고도 하는데, 특정한 동작을 수행하거나 특정 결과를 계산하는 일련의 구문 순서를 묶는 수단이다. 우리는 이 메서드들의 이름을 호출하여 사용할 수 있다.using UnityEngine;public class Test1 : MonoBehaviour{ public void Start() { int a = 10, b = 20; Debug.Log(Add(a, b)); } public int Add(int a, int b) { int c = a + b; return c; }}...이런 식으로 말이다. 이 경우 Add라고 하는 메서드를 Start메서드..
C#) C#에서의 배열 사용 방법
·
Programming/C C# C++
C#에서는 배열을 선언할 때 기존에 C와 C++에서 했던 방법과는 달리 자료형 바로 뒤에 대괄호를 붙이게 된다.int[] type;이런 식으로 말이다. 만약 2차원 배열이나 그 이상의 배열을 필요로 한다면,int[,] types;이런 식으로 콤마를 입력해서 차원 수를 늘릴 수 있다. 이 배열에 값을 할당하는것은 일반적으로 배열에 값을 할당하는 것처럼 선언과 동시에 초기화하면 되지만, 이미 선언된 배열에 값을 할당하는 경우 new 키워드를 사용하여 대입해야 한다. string[] languages;languages = new string[] {"C#", "C++"}; //문자 자체를 대입하는 방식languages = new string[9]; //배열의 개수만 대입하는 방식 그 외 사용법은 기존의 방식과 ..
C#) 캐스팅, 박싱, 언박싱
·
Programming/C C# C++
캐스팅캐스팅이란 변수의 자료형을 다른 자료형으로 변환하는 연산을 말한다.이 캐스팅에는 암시적 캐스팅과 명시적 캐스팅의 두 종류로 나뉘는데, 전자의 경우 단위가 작은 자료형에서 단위가 큰 자료형으로 캐스팅 하는경우 (float에서 double형으로 캐스팅 등등)가 있다.short a = 20;int b = a;이런 형식으로 말이다. 명시적 캐스팅의 경우 자료형의 형태가 다르거나 더 큰 자료형에서 작은 단위의 자료형으로 형 변환하는 경우 주로 사용한다.double a = 3.14;float b = (float) a;float c = 2.17;int d = (int) c;두 경우 모두 명시적 캐스팅이지만, 조금의 차이가 존재한다.전자의 경우 큰 단위(8바이트)에서 작은 단위(4바이트)로 자료형이 작아지기 때문..
C#) 값 형식과 참조 형식
·
Programming/C C# C++
C#은 데이터의 메모리 저장 방식에 따라 두 개의 타입으로 나뉘게 된다.바로 값 형식(Value Type)과 참조 형식(Reference Type)이다. 두 형식은 다음과 같은 차이점이 있다.값 형식(Value Type)참조 형식(Reference Type)변수에 값을 대입하는 데이터 형식int, double형 등등이 있다.데이터를 스택(Stack) 메모리에 할당한다.변수에 값 대신 값의 주소를 대입하는 데이터 형식대표적으로 object형이 있다.데이터를 힙(Heap) 메모리에 할당한다. 값 형식의 경우 데이터를 복사하여 저장하기 때문에, 원래 변수의 값을 두 번째 변수에 할당하면 원래 변수의 값 사본이 새로운 변수의 위치에 만들어진다. 따라서 첫 번째 변수를 변경해도 두 번째 변수의 값에는 영향을 주지..
C#) Null과 Void의 차이
·
Programming/C C# C++
Null이란 변수에 아무것도 설정되지 않았다는 것을 의미하는 상수를 말한다.예를 들어int T = Null;이런 식으로 선언을 한다면 T의 값은 아예 정의되어 있지 않다는 것을 의미한다.이 Null이라는 상수는 0과는 또 살짝 다른데, 0을 대입하게 되면 값 자체는 존재하지만 그 값이 0인 것을 의미하고, Null을 대입하면 값조차도 없다는 의미이다. Void의 경우에는 C++에서와 C#에서의 의미가 살짝씩 다르다.C++의 경우 포인터로써 사용할수 있기 때문에 메소드에서 어떤 데이터도 반환하지 않는다는 의미를 갖는데 반해,C#에서는 주로 데이터 형식을 지정해야 하지만, 실제로 반환되는 데이터가 없는 경우 사용한다. 일반적으로 주로 사용하는 void 포인터의 경우 가리키는 대상이 없는 포인터라는 의미를 가..
1.1 + 0.1 == 1.2가 false인 이유
·
Programming/C C# C++
요약 : 10->2진법 변환 한계로 소수 표현이 제대로 안되어서 연산 후 결과를 비트연산하게되면 다른값이 나올 수 있다. 가끔 소수점 단위 연산을 해야하는 경우가 있다. 예를 들어 0.1초마다 주위를 스캔한다던지, 무게를 0.25초마다 측정한다던지 하는 경우 말이다. 이런 경우 특별한 조치를 취해주지 않는다면 오류가 발생할 가능성이 있다. 예를 들어 이 사진의 경우 1.1 + 0.1이 1.2와 동일한지를 계산하는 코드이다. 상식대로라면 동일하다는 결과가 나와야 하지만 결과는 보다시피 거짓이 나오게 된다.어디가 문제일까?컴퓨터는 숫자를 저장할 때 바이트 단위로 수를 집어넣는다. 실수를 저장할때는 주로 float, double을 사용하는데, float는 4바이트, double은 8바이트라는 차이점이 있을 뿐..