반응형

다음 사이트에 있는 Zig 강좌를 따라해보며 포스트를 올려보고 있습니다.

https://zig.guide/



2024. 3. 28  최초작성

2024. 4. 1




다음 포스트를 참고하여 zig 개발 환경을 구성하세요.

 

zig 설치하여 Visual Studio Code 개발환경 만들기 - Windows, Linux, macOS

https://webnautes.tistory.com/2301 





 

zig 강좌를 진행하고 있습니다.

 

zig 강좌 01 - Assignment(대입)

https://webnautes.tistory.com/2304

 

 

zig 강좌 02 - Arrays(배열)

https://webnautes.tistory.com/2305



zig 강좌 03 - if 문

https://webnautes.tistory.com/2306 



zig 강좌 04 - while 문

https://webnautes.tistory.com/2308

 

zig 강좌 05 - for 문

https://webnautes.tistory.com/2309 

 

zig 강좌 06 -함수

https://webnautes.tistory.com/2313 

 

zig 강좌 07 - Defer

https://webnautes.tistory.com/2317

 

 

이번엔 다음 링크에 있는 내용을 정리해봤습니다.  

https://zig.guide/language-basics/assignment 




zig에서 값(value)을 변수(var), 상수(const)에 대입하는 구문은 다음과 같습니다

 

(const|var) identifier[: type] = value



const는 식별자(identifier)가 변하지 않는 값(immutable value)을 저장하는 상수(constant)임을 나타냅니다.

 

var는 식별자가 변경 가능한 값(mutable value)을 저장하는 변수(variable)임을 나타냅니다.

 

: type은 상수 또는 변수에 대한 타입 주석(type annotation)으로 변수의 타입을 의미합니다.  값의 데이터 타입을 유추할 수 있는 경우 생략할 수 있습니다.



예를 들어 보겠습니다. 코드에 설명을 추가하기 위해 //을 사용하여 주석을 추가할 수 있습니다.

 

const constant: i32 = 5; // 부호 있는 32비트 정수를 저장하는 상수
var variable: u32 = 5000; // 부호 없는 32비트 정수를 저장하는 변수




상수의 값을 출력해봅니다. 상수는 값을 변경할 수 없습니다. 

 

// 표준 라이브러리를 로드하여 std로 사용합니다.
const std = @import("std");

pub fn main() void {

    // 정수 5를 부호있는 32비트 정수(i32) 타입의 상수(const)에 저장합니다.
    const constant: i32 = 5;

    // 다음처럼 print문을 사용하여 상수 const의 값을 출력할 수 있습니다.
    // {}를 적은 위치에 .{}안에 적은 변수의 값이 출력됩니다.
    // print문은 자동으로 줄바꿈을 해주지 않기때문에 줄바꿈문자 "\n"이 필요합니다.
    std.debug.print("constant={}\n", .{constant});
}



실행하면 다음처럼 출력됩니다.

 

 % zig run main.zig

constant=5




이번엔 변수의 값을 변경하여 출력해봅니다.

 

const std = @import("std");

pub fn main() void {

    // 정수 5000을 부호없는 32비트 정수(u32) 타입의 변수(var)에 저장합니다.
    var variable: u32 = 5000;

    std.debug.print("변경전 variable={}\n", .{variable});

    // 변수 variable의 값을 정수 50으로 변경합니다.
    variable = 50;

    std.debug.print("변경후 variable={}\n", .{variable});
}



실행 결과입니다.

 

변경전 variable=5000

변경후 variable=50



print문을 사용하여 두개 이상의 변수 또는 상수의 값은 다음처럼 출력할 수 있습니다.

 

const std = @import("std");

pub fn main() void {
    var variable1: u32 = 1000;
    var variable2: u32 = 2000;

    //.{}에 추가한 순서대로 {} 자리에 출력됩니다.
    std.debug.print("variable1={}  variable2={}\n", .{ variable1, variable2 });
}



@as를 사용하여 명시적 타입 강제로 지정할 수도 있습니다.

 

// @as를 사용해 정수 5를 저장하는  상수 inferred_constant의 타입을 i32(부호있는 32비트 정수) 타입으로 지정합니다.
const inferred_constant = @as(i32, 5);

// @as를 사용해 정수 5000을 저장하는 변수 inferred_variable의 타입을 u32(부호없는 32비트 정수) 타입으로 지정합니다.
var inferred_variable = @as(u32, 5000);



상수와 변수에는 값이 대입되어야 하지만 그럴 수 없는 경우 타입 주석과 함께 모든 타입에 사용할 수 있는 정의되지 않은 값 undefined을 상수와 변수에 대입할 수 있습니다. 

 

const a: i32 = undefined;
var b: u32 = undefined;




undefined로 값을 지정한 것을 출력해보면 값이 출력되는 것으로 봐서는 undefined 사용시 주의가 필요할거 같습니다.

 

// 표준 라이브러리를 로드하여 std로 사용합니다.
const std = @import("std");

pub fn main() void {
    var variable: u32 = undefined;

    std.debug.print("variable={}\n", .{variable});
}




zig에서는 가능한 var 값보다 const 값을 선호합니다.



반응형

'Zig > Zig 강좌' 카테고리의 다른 글

zig 강좌 06 -함수  (0) 2024.04.10
zig 강좌 05 - for 문  (0) 2024.04.06
zig 강좌 04 - while 문  (0) 2024.04.04
zig 강좌 03 - if 문  (0) 2024.04.02
zig 강좌 02 - Arrays(배열)  (0) 2024.03.30

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts