학습 내용/Rust
[일반 프로그래밍 개념] 데이터 타입 - 1. 스칼라 타입
yein
2022. 5. 24. 00:34
- 러스트는 정적 타입 언어
- 정적 타입 언어: 컴파일 시점에 모든 변수의 타입이 결정되어야 함.
- 동적 타입 언어: 런타임에 자료형이 동적으로 결정됨.
- 데이터 타입의 두 가지 부분집합
- 스칼라(Scalar) 타입: 하나의 값을 표현
- 컴파운드(Compound) 타입: 하나의 타입으로 여러 개의 값을 그룹화한 타입
스칼라 타입
1. 정수(integer)
2. 부동 소수점 숫자(floating point numbers)
3. 불리언(boolean)
4. 문자(characters)
정수(integer)
- 소수점 없는 숫자
- 정수 타입 중 부호가 있는 것은 i로 시작하고, 부호가 없는 것은 u로 시작
- 예: i16 / u32
- 부호가 있고 없고의 차이는 음수를 저장할 수 있는지 아닌지의 차이
- 러스트의 각 정수 타입에는 크기가 정해져 있음.
크기 | 부호 있음 | 부호 없음 |
8bit | i8 | u8 |
16bit | i16 | u16 |
32bit | i32 | u32 |
64bit | i64 | u64 |
arch | isize | usize |
- 부호 있으면 다음 두 값 사이의 값들을 보관할 수 있음.
- 부호 없으면 다음 두 값 사이의 값들을 보관할 수 있음.
- isize, usize는 프로그램 실행 중인 컴퓨터의 아키텍쳐 환경에 따라 크기가 달라지며, 컬렉션 타입의 인덱스를 참조할 때 주로 사용함.
- 정수 기본 타입은 i32로, 일반적으로 가장 빠름.
부동 소수점 타입(floating point numbers)
- 러스트에는 소수점 가진 숫자를 처리하는 다음의 두 가지 타입의 부동 소수점 타입이 있음. (부동 소수점 숫자는 IEEE754 표준에 따라 표현)
- f32 (32bit 크기) : 단정도(single-precision) 부동 소수점
- f64 (64bit 크기) : 배정도(double-precision) 부동 소수점
- 러스트는 이 중 f64를 기본 타입으로 규정
- 대부분의 CPU에선 f64가 빠르면서도 정확도도 더 높다고 함.
- 소수점 가진 숫자 처리할 때 따로 타입 명시하지 않으면 기본적으로 f64 타입으로 추론됨.
fn main() {
let x = 2.0; // f64
let y: f32 = 3.0; // f32
println!("{} {}", x, y);
}
사칙 연산
- 러스트는 모든 숫자 타입에 대해 기본적인 사칙연산 지원
fn main() {
/* 사칙 연산 */
let sum = 1 + 1;
println!("1 더하기 1은? = {}", sum); // 2
let diff = 352.2 - 17.7;
println!("{}", diff); // 334.5
// let product = 2 * 2.3;
// cannot multiply `{integer}` by `{float}` - rustc(E0277)
let product = 2.0 * 2.3;
println!("{}", product); // 4.6
let remainder = 20 % 3;
println!("{}", remainder); // 2
}
불리언 타입(boolean)
- bool 키워드를 이용하여 불리언 타입 선언
- true, false
- 1byte 크기
문자 타입(characters)
유니코드 및 char 타입 관련 흥미로운 글... (러스트 뿐만 아니라 프로그래밍 언어 전반..)
http://www.itmoa.co.kr/gzboard.php?code=techqna&mode=gz_read&Page=6&no=194
fn main() {
/* char 타입 */
let mut example = 'a';
println!("{} b c d e...", example); // a b c d e...
example = '😻';
println!("{}: 야옹~", example); // 😻: 야옹~
}
- 러스트의 char 타입
- 문자 하나를 표현
- 4byte 크기
- 유니코드 스칼라값이라서 ASCII보다 많은 문자 표현 가능 (이모지까지 쌉가능)
- U+0000부터 U+D7FF, U+E000부터 U+10FFFF까지의 값 포함
유니코드 0000~0FFF - 위키백과, 우리 모두의 백과사전
이 문서 안에는 일부 컴퓨터·브라우저에서 표시할 수 없는 문자가 있습니다. 그러므로 유니코드 글꼴이 있는 환경에서 보시는 것이 좋습니다. 다음은 U+0000에서 U+0FFF 안의 유니코드 문자 목록이
ko.wikipedia.org
- 예제 코드에서 알 수 있듯이, 앞서 살펴본 문자열 리터럴은 큰따옴표("")로 표현하는 반면, char 리터럴은 작은따옴표('')로 표현함.
참고
https://rinthel.github.io/rust-lang-book-ko/ch03-00-common-programming-concepts.html
보편적인 프로그래밍 개념 - The Rust Programming Language
이번 챕터에서는 모든 프로그래밍 언어가 대부분 가진 개념이 Rust에서는 어떻게 다루어지는지 알아보고자 합니다. 많은 프로그래밍 언어가 보편적인 핵심요소를 갖습니다. 이번 챕터에서 Rust
rinthel.github.io