프로그래밍 언어
[C++] 문자열 인코딩 (유니코드 멀티바이트 UTF-8 변환)
유니코드 > 멀티바이트 wchar_t strUnicode[256] = {0,}; charstrMultibyte[256] = {0,}; wcscpy_s(strUnicode,256,L"유니코드"); int len = WideCharToMultiByte( CP_ACP, 0, strUnicode, -1, NULL, 0, NULL, NULL ); WideCharToMultiByte( CP_ACP, 0, strUnicode, -1, strMultibyte, len, NULL, NULL ); stl 이용 wstring strUni = L"유니코드"; int len = WideCharToMultiByte( CP_ACP, 0, &strUni[0], -1, NULL, 0, NULL, NULL ); string strMul..
[C++] *와 *& 연산자의 차이
int *&x int *y 의 차이 x는 int 포인터에 대한 레퍼런스 타입 y는 int 포인터 타입 아래 func 함수 파라미터로 넘길 시 y는 복사본을 받을거고 x는 포인터에 대한 주소를 받게 된다. 이거는 y는 스코프 벗어 날 시 값 변화가 없지만 x는 변경된다 void func(int* p, int*& pr) { p++; pr++; } int main() { int a[2]; int* b = &a[0]; int* c = &a[0]; std::cout
C++과 C#의 차이 (데이터, 메모리)
게임 개발에 사용하는 대표적인 엔진인 언리얼 엔진과 유니티 엔진은 각각 C++, C# 언어로 스크립트를 작성한다. 두 언어 모두 C언어에서 파생되었다는 것과 객체지향 프로그래밍 언어라는 공통점이 있지만, 꽤나 큰 차이가 있다. · 컴파일 결과 C++와 C#은 똑같이 컴파일이라는 과정을 거쳐 실행 파일을 생성하게 되지만, 프로그래머가 작성한 소스파일의 컴파일 결과로 생성되는 중간 파일의 형태가 다르다. C++로 작성한 코드는 어플리케이션의 실행 파일을 운영체제가 바로 실행하기 때문에, 컴퓨터가 이해할 수 있는 기계어에 가까운 어셈블리어라는 언어로 컴파일한다. 반대로 C#으로 작성한 어플리케이션은 운영체제 위의 .NET이라는 가상 머신 실행 환경에서 실행되기 때문에 .NET에 적합한 IL(Intermidia..
[JS] '==' 와 '===' 는 다르다
무엇이 다른가? 저는 자바 언어를 먼저 배운 입장에서 자바스크립트에 깊게 노출되지 않았기 때문에 충격을 받았다. 비록 자바스크립트의 어떤 기능, 사건 처리, 그리고 어떤 jQuery 속임수에 상당히 익숙했지만, 자바스크립트에 대한 미묘한 세부 사항들을 알지 못했다. 다시 마음을 잡고 웹 개발의 기본을 공부하기로 마음 먹은 저는 '==' 와 '===' 연산자의 차이를 알지 못한다고 스스로 말하면서 올바른 생각을 했다. 정답부터 말하자면, '=='와 '===' 연산자의 주된 차이점은, 예를 들어, 숫자를 숫자 리터럴과 비교하면, '=='는 그것을 허용하지만, '===' 두 변수의 형식은 동일하지 않은 경우, 값뿐만 아니라 두 변수의 유형도 확인하므로, 허용하지 않는 것이다. 즉, '==='는 'false'으..
[JS] 자바스크립트의 형변환 (Type Casting)
자바스크립트는 타입이 매우 유연한 언어이다. 때문에 자바스크립트 엔진이 필요에 따라 암시적변환을 혹은 개발자의 의도에 따라 명시적변환을 실행한다. 암시적 형 변환(Implicit type conversion) 암시적 변환이란 자바스크립트 엔진이 필요에 따라 자동으로 데이터 타입을 변환시키는 것이다. 1) 산술연산자 더하기(+) 연산자는 숫자보다 문자열이 우선시 되기 때문에, 숫자형이 문자형을 만나면 문자형으로 변환하여 연산된다. number + number // number number + string // string string + string // string string + boolean // string number + boolean // number 50 + 50; //100 100 + “점”..
[JS] 문자열(String) 객체 정리 (속성 및 메소드)
1. 문자열 객체 생성 및 초기화 var 참조변수 = new String(문자열 데이터) var 참조변수 = 문자열 데이터 ▼ 문자열 객체를 선언하는 방식은 두 가지가 있다. 첫 번째는 new 연산자를 통해 String 객체를 생성하면서 생성자 정보로 문자열 데이터를 넘기는 방식과 new 연산자를 사용하지 않고 선언한 참조 변수에 문자열 데이터를 입력하여 객체를 생성하는 방식이 있다. 2. 문자열 함수 - charAt() 자바스크립트(JavaScript)에서는 문자형 데이터를 객체화한 String 객체를 제공함으로써 그 안에 내장되어있는 속성 및 함수를 통해 다양한 기능을 제공하고 있다. charAt() 함수는 문자열에서 인자로 넘긴 index에 해당하는 문자형 데이터를 반환해주는 함수이다. ▼ Samp..
[JS] 연산자 우선순위
연산자들은 한 명령에서 쓰일 때, 서로간에 우선순위를 가지고 연산됩니다. 수학 연산처럼 괄호가 가장 높은 우선 순위를 갖고, 증감, 산술, 비교, 논리, 대입, 비트 순서로 우선순위를 갖습니다.
[C#] 자료구조 : 해시테이블 (Hash Table)
해시(Hash)는 키 값을 해시 함수(Hash function)으로 해싱하여 해시테이블의 특정 위치로 직접 엑세스하도록 만든 방식이다. 키 값을 통해 직접 엑세스하기 위해서 모든 가능한 키 값을 갖는 배열을 만들면, 배열크기가 엄청나게 커지게 된다. 예를 들어, 주민등록번호를 키 값으로 하는 경우, 000000-0000000 부터 999999-9999999까지 10의 13승의 배열 공간이 필요한데, 만약 회원수가 1000명인 경우, 1000명을 저장하기 위해 10^13의 엄청난 배열 공간이 필요하게 된다. 이렇게 낭비되는 공간을 줄이기 위해 해시 함수를 사용하게 되는데, 이 함수는 적은 공간 안에서 모든 키를 직접 찾아갈 수 있도록 해준다. 하지만 경우에 따라 서로 다른 키가 동일한 해시테이블 버켓 위치..
[JS] 자바스크립트 console.log 사용 방법 (로그 찍기)
1. 숫자를 인수로 전달 숫자가 console.log() 함수에 전달되면 함수가 이를 표시합니다. 2. 문자열을 인수로 전달 문자열이 함수 console.log()에 전달되면 함수가 이를 표시합니다. 3. 문자를 인수로 전달 문자를 console.log() 함수에 전달하면 함수가 이를 표시합니다. 4. 메시지를 인수로 전달 변수가 아닌 문자열 리터럴을 바로 console.log() 함수의 매개변수로 전달하면 함수는 주어진 메시지를 표시합니다. 5. 함수를 인수로 전달 함수를 console.log() 함수에 전달하면 이는 전달된 function()의 값을 표시합니다. 6. 메시지와 함께 숫자를 인수로 전달 숫자가 console.log() 함수에 전달되면 함수는 주어진 메시지와 함께 숫자를 표시합니다. 7...