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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions