다음 사이트에 있는 Zig 강좌를 따라해보며 포스트를 올려보고 있습니다.
2024. 4. 2 최초작성
다음 포스트를 참고하여 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/if
Zig에서의 if 문은 부울(bool) 값(즉, true 또는 false)만을 허용합니다. 0이 아닌 모든 값을 true로 간주했던 C언어와 다릅니다. C언어에서 암시적으로 if 문에 있는 값을 부울 값으로 바꾸어서 처리했던 것입니다.
예를 들어 C언어에서는 다음처럼 if 문이 true 또는 false 아닌 값을 조건으로 사용할 수 있었습니다.
int num = 5; if (num) { // num이 0이 아니므로 여기에 있는 코드가 실행됩니다. } |
zig에서 if문의 사용법은 C언어와 거의 유사합니다. 하지만 다음처럼 작성하면 에러가 발생합니다.
const std = @import("std"); pub fn main() void { var a = true; if (a) std.debug.print("a는 true 입니다. a={}\n", .{a}); else std.debug.print("a는 false 입니다. a={}\n", .{a}); } |
실행 결과입니다. else 문에서 에러가 발생했다고 나옵니다. 이유는 if 문 다음에 ;을 사용했기 때문입니다. if 문 뒤에 else 문이 따라 온다면 if 문에서 실행하는 코드에 ;을 붙이면 안됩니다.
% zig run main.zig
main.zig:7:5: error: expected statement, found 'else'
else std.debug.print("a는 false 입니다. a={}\n", .{a});
다음 처럼 if 문에서 실행하는 코드에 있는 ;을 제거하면 문제없이 실행이 됩니다. 하지만 visual studio code를 사용할 경우 zig 확장에서 한줄로 바꿔버리기 때문에 if 문이라 else 문에서 실행되는 코드가 긴 경우에는 불편하겠다 싶습니다. 뒤에서 해결방법을 소개합니다.
const std = @import("std"); pub fn main() void { var a = true; if (a) std.debug.print("a는 true 입니다. a={}\n", .{a}) else std.debug.print("a는 false 입니다. a={}\n", .{a}); } |
실행 결과 변수 a의 값이 true이므로 if문에 있는 print 문이 실행된 것을 볼 수 있습니다.
% zig run main.zig
a는 true 입니다. a=true
만약 if문 뒤에 else 문이 없다면 ;을 붙여주면 됩니다.
const std = @import("std"); pub fn main() void { var a = true; if (a) std.debug.print("a는 true 입니다. a={}\n", .{a}); } |
다음처럼 문제 없이 실행됩니다.
% zig run main.zig
a는 ture 입니다. a=true
if 문 뒤에 else 문이오면 ;을 붙여주면 안된다 했습니다. 하지만 if문과 else문에서 실행하는 코드가 긴 경우엔 불편합니다. 또한 한 줄 이상의 코드를 필요한 경우도 있습니다. 이 경우엔 중괄호{}를 사용하면 되는데 구조가 C언어와 똑같습니다.
const std = @import("std"); pub fn main() void { var a = true; if (a) { std.debug.print("a는 true 입니다. a={}\n", .{a}); } else { std.debug.print("a는 false 입니다. a={}\n", .{a}); } } |
'Zig > Zig 강좌' 카테고리의 다른 글
zig 강좌 06 -함수 (0) | 2024.04.10 |
---|---|
zig 강좌 05 - for 문 (0) | 2024.04.06 |
zig 강좌 04 - while 문 (0) | 2024.04.04 |
zig 강좌 01 - Assignment(대입) (0) | 2024.04.01 |
zig 강좌 02 - Arrays(배열) (0) | 2024.03.30 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!