Skip to content

Rust 기초 문법 1 노트 #3

@tmvkrpxl0

Description

@tmvkrpxl0
// 부호 있는 정수
// iN - Integer
// i8 - 8비트 정수 = char
// i16 - 16비트 정수 = short
// i32 - ... = int
// i64 - ... = long

// 부호 없는 정수
// uN - Unsigned Integer
// u8
// u16
// u32
// u64

// 가변 크기 정수
// isize - 부호 + 64비트(x86_64 기준)
// usize - + 64비트(x86_64 기준)

// 부동 소수점
// fN
// f32
// f64

// 기타
// str - 문자열. &str 형태로만 사용할 수 있음.
// char - 유니코드 지원되는 문자. 크기: 4바이트
// bool - true/false

fn main() {
    let a = 1;

    let v_i8: i8 = 1;
    let v_i16: i16 = 2;
    let mut v_i32: i32 = 3;
    let v_i64: i64 = 4;

    let v_u8: u8  = 5;
    let v_u16: u16 = 6;
    let v_u32: u32 = 7;
    let v_u64: u64 = 8;

    let f_f32 = 1.0;
    let mut f_f64 = 2.0;
    let mut f_f64_2 = 17.0;

    // 문자열은 내용에 따라 길어지는 타입이라
    // 사이즈를 알 수가 없어 다른 곳에 작성하고
    // 그 곳의 레퍼런스를 따옴
    let s_str: &str = "abcdef";

    let mut v_bool = true;

    // &T = 읽기 전용 레퍼런스
    // &mut T = 쓰기 가능 레퍼런스
    let read_only1 = &f_f32;
    let read_only2 = &f_f32;
    let read_only3 = &f_f32;
    let mutable = &mut f_f64;

    // mutable의 "내용"은 다른 값의 주소값.
    // mutable 자체는 상수임
    // 아래 코드는 실행할 수 없음
    // mutable = &mut f_f64_2;
    // let mut mutable = ... 로 정의하면 위 코드 실행 가능.

    // 함수 호출
    // <name>(params....);
    // size_of_val(....);

    // if문
    if v_bool {
        println!("First");
    } else if false {
        println!("Second");
    } else {
        println!("Third");
    }

    // 반복문 1: 무한 반복
    // loop { .. }
    loop {
        println!("Loop");
        // break 필수
        break;
    }

    // 반복문 2: 조건 반복
    // while <조건> { .. }
    while v_bool {
        println!("While");
        v_bool = false;
    }

    // 반복문 3: 순회 반복
    // for <변수 이름> in <순회 가능한 값> { .. }
    let range = 5..=17;
    for i in range.rev() {
        println!("{i}")
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions