다음 사이트에 있는 Zig 강좌를 따라해보며 포스트를 올려보고 있습니다.
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
zig 강좌 08 - Switch
https://webnautes.tistory.com/2324
이번엔 다음 링크에 있는 내용을 정리해봤습니다.
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://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!