본문 바로가기

프로그래밍 언어38

자바스크립트 string 자바스크립트는 UTF-16 인코딩을 사용한다. 따라서 문자열은 16 bit 값의 시퀀스로 본다. 대부분의 문자는 하나의 유니코드로 나타낼 수 있지만, 두 개의 16 bit 값으로 나타내야 하는 경우도 있다. let euro = "€"; let love = "❤"; euro.length // => 1: 하나의 16-bit 요소 love.length // => 2: ❤의 UTF-16 인코딩은 "\ud83d\udc99" 대부분의 문자열 메소드는 문자에 대해서가 아니라 16 bit 값으로 동작한다. ES6 이후에는, 문자는 iterable하고, for loop에서는 16 bit 값이 아닌 문자에 따라 연산을 할 수 있다. 문자열 여러 줄에 걸쳐서 나타내기 "two\nlines" /* ES5 */ // 끝에 ba.. 2021. 7. 5.
자바스크립트 BigInt BigInt는 ES2020에서 정의되었다. 64비트 정수 표현을 위해 추가되었다. 숫자 뒤에 소문자 n을 써서 BigInt를 정의한다. 123n 0b1111111n 0o567n 0x8000000000000000n // 2n**64n BigInt()를 함수로 사용해 숫자나 문자열을 BigInt 값으로 변환할 수 있다. BigInt(Number.MAX_SAFE_INTEGER) let string = "1" + "0".repeat(10); BigInt(string) 사칙 연산에서는 BigInt와 number type을 같이 쓸 수 없다. 하지만 비교 연산에서는 같이 쓸 수 있다. 1000n + 2000n // 3000n 1 1n // true 0 == 0n // true 0 ==.. 2021. 7. 5.
자바스크립트 Math 객체 Math 객체(object)를 이용해 아래와 같은 연산을 할 수 있다. Math.pow(2,10) // 1024, 2의 10승 Math.round(.6) // 1.0, 가까운 수로 반올림 Math.ceil(.6) // 1.0, 가까운 수로 올림 Math.floor(.6) // 0.0, 가까운 수로 내림 Math.abs(-1) // 1, 절댓값 Math.max(x,y,z) // 최댓값 반환 Math.min(x,y,z) // 최솟값 반환 Math.random() // 0이상 1.0미만의 랜덤 숫자 Math.PI // 파이 Math.E // 자연로그의 밑수 Math.sqrt(4) // 4**0.5, 루트 4 Math.pow(4, 1/3) // 4**(1/3), 4의 3제곱근 Math.sin(10) // 삼각함.. 2021. 7. 5.
자바스크립트 Numbers 자바스크립트의 숫자는 64비트 부동소수점 형식(floating-point)을 따른다. 하지만 배열 인덱스나 비트 연산에서는 32비트 정수를 이용한다. 정수(integer literals) 255 /* 16진수 */ 0xff 0xFF 0Xff /*** ES6 ***/ 0b11111111 // 2진수 0o377 // 8진수 실수(floating-point literals) 3.14 .333 6.02e23 // 6.02 x 10^23 3.14E-1 // 3.14 x 10^(-1) 자바스크립트는 arithmetic overflow, underflow, division by zero에 대해 에러를 발생시키지 않는다. arithmetic overflow가 발생하면 값은 Infinity가 된다. 반대로 음수쪽으로 o.. 2021. 7. 5.
C/C++ memset() 메모리 블록을 채우는 함수 #include void *memset(void *dest, int c, size_t count); memset() 함수는 dest 포인터가 가리키는 곳부터 count 바이트만큼 값 c로 채운다. 값 c는 부호없는 문자(unsigned character)로 변환된다. 매개변수 void *dest : 채울 메모리 블록에 대한 포인터 int c : 설정할 값, 넘겨지는 값은 int이지만 부호없는 문자로 변환되어 메모리 블록에 채워진다 size_t count : 값으로 채워질 바이트(byte)의 수 반환값 dest에 대한 포인터를 반환 코드 예시 #include #include int main(void) { char buffer[256]; char *string; memset(buffer, 0, sizeof(.. 2021. 7. 4.
C/C++ fgets() 문자열 읽기 함수 #include char *fgets(char *string, int n, FILE *stream); fgets() 함수는 stream에서 문자열을 읽는다. 문자열을 읽을 때, 첫 번째 개행 문자를 포함하는 곳까지 읽거나, stream의 끝까지 읽거나, $n-1$개의 문자를 읽는다. 읽은 문자열을 string에 저장하고 끝에 \0을 추가한다. $n$이 1이면 빈 string이 된다. 매개변수 char *string : stream에서 읽은 문자열을 복사해 저장할 문자 배열에 대한 포인터 int n : string에 복사될 최대 문자 수 FILE *stream : FILE 객체에 대한 포인터, 인자로 stdin을 사용해 표준 입력(standard input)으로 부터 입력 받을 수 있다 반환값 함수 호출이.. 2021. 7. 4.
C/C++ gets() 행 읽기 함수 #include char *gets(char *buffer); gets() 함수는 표준 입력 스트림 stdin으로 행을 읽고 buffer에 저장한다. 함수가 행을 읽은 경우 개행 문자 \n을 null 문자 \0으로 대체한다. gets()를 사용하지 말고, fgets()를 사용하자. gets() 함수는 2011 standard에서 deprecated 되었고, 2014 standard에서 제거되었다. gets() 함수를 사용하는 것이 버퍼 오버플로우를 발생시킬 수 있는 위험이 있기 때문이다. gcc를 이용해 컴파일 할 경우 다음과 같은 경고 메시지가 나타난다: warning: the `gets' function is dangerous and should not be used. 반환값 함수 호출이 성공한 경우.. 2021. 7. 4.