r42
r1
1[[분류:테스트]]
2[목차]
r24
3== 개요 ==
r30
4[[https://namu.wiki/w/%EB%82%98%EB%AC%B4%EC%9C%84%ED%82%A4:%EB%AC%B8%EB%B2%95%20%EB%8F%84%EC%9B%80%EB%A7%90/%EC%8B%AC%ED%99%94#if|나무위키:문법 도움말/심화 문서의 if 문단]]도 참고.
5
r24
6if 구문 테스트.
r1
7RAW(원문) 참조.
r24
8== true, false ==
r1
9{{{#!undefined_command @a@==1
101}}}
11----
r41
12if true 1 (정의되지 않는 #!(Shebang) 구문(문법)이면 리터럴로 출력되어야 하겠으나 if는 그렇지 않다.)
r1
13{{{#!if true
r41
141 (true는 출력된다.)}}}
r1
15----
16if false 1
17{{{#!if false
r41
181 (false는 출력되지 않는다.)}}}
r24
19== 매개변수 테스트 ==
r22
20[include(틀:상세 내용, 설명대상=매개변수 대상, 문서명=테스트:If문법/include 대상)]
21[include(틀:상세 내용, 설명대상=매개변수 대상의 include 테스트 결과, 문서명=테스트:If문법/include 결과)]
r24
22== |기호 테스트 ==
r42
23=== 논리 연산 ===
r1
24|기호 테스트 (둘 다 true)
25{{{#!if (1==1)|(1==0)
r24
26출력 (| 기호)}}}
r1
27----
28|기호 테스트 (둘 중 한 쪽 false)
29{{{#!if (1==2)|(2==2)
r24
30출력 (| 기호)}}}
r1
31----
32|기호 테스트 (둘 다 false)
33{{{#!if (1==2)|(1==0)
r24
34출력 (| 기호)}}}
r23
35----
r41
36true | true : 출력된다.
r23
37{{{#!if true | true
r24
38출력(| 기호)}}}
r23
39----
r41
40true | false : 출력된다.
r23
41{{{#!if true | false
r24
42출력 (| 기호)}}}
r23
43----
r41
44false | true : 출력된다.
r23
45{{{#!if false | true
r24
46출력 (| 기호)}}}
r23
47----
r41
48false | false : 출력되지 않는다.
r23
49{{{#!if false | false
r24
50출력 (| 기호)}}}
51----
52결론 : | 기호는 논리연산 OR
r42
53
54----
55true || true : 출력된다.
56{{{#!if true || true
57출력 (| 기호)}}}
58----
59true ||| true : 출력되지 않는다.
60{{{#!if true ||| true
61출력 (| 기호)}}}
62
r35
63=== 비트 연산 ===
r42
64| 기호가 2진수 비트합으로도 처리되는 것은, true와 false 진리값이 각각 1, 0인 논리를 시스템상에서 나타내므로
r33
65|| || case1 || case2 || case3 || case4 ||
66|| A || 1 || 1 || 0 || 0 ||
67|| B || 1 || 0 || 1 || 0 ||
68|| A|B || 1 || 1 || 1 || 0 ||
r42
69표와 같이 처리되기 때문으로 보인다. (1을 true, 0을 false 놓고 보면 | 연산 결과가 같다.)
r33
70
r41
71그래서 이진법도 각 자릿수별로 | 연산 비교가 가능한 것으로 보인다.
72가령 5|3을 보자면 이진법으로 변환한 값의 각 자릿수에 따라 연산이 된다.
r33
73|| 10진수 || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
74|| 5 = || 1 || 0 || 1 ||
75|| 3 = || 0 || 1 || 1 ||
76|| (5|3) = 7 || 1 || 1 || 1 ||
77----
r41
78(5|3)=7 테스트 : 출력된다.
r33
79{{{#!if (5|3) ==7
80출력}}}
81----
r41
82(5|3)=6 테스트 : 출력되지 않는다.
r33
83{{{#!if (5|3) ==6
84출력}}}
r41
85그래서 (5|3)=7 을 조건부로 둔 if 구문(문법)을 걸어놓으면 true로 동작되는 것으로 보인다.
r33
86----
87(9|5)=13 테스트
r42
88|| 10진수 || 2^^^3^^^ || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
89|| 9 = || 1 || 0 || 0 || 1 ||
90|| 5 = || 0 || 1 || 0 || 1 ||
91|| (9|5) = 13 || 1 || 1 || 0 || 1 ||
r33
92{{{#!if (9|5) ==13
93출력 (1101)}}}
94----
r41
95(9|5)=12 테스트 : 일(2^^^0^^^)의 자릿수가 틀려서 출력되지 않는다.
r33
96{{{#!if (9|5) ==12
97출력 (1101)}}}
r42
98
r24
99== & 기호 테스트 ==
r42
100=== 논리 연산 ===
r41
101&기호 테스트 (한 쪽 false) : 출력되지 않는다.
r1
102{{{#!if (1==1)&(1==0)
r24
103출력 (& 기호)}}}
r1
104----
r41
105&기호 테스트 (한 쪽 false) : 출력되지 않는다.
r1
106{{{#!if (1==0)&(3==3)
r24
107출력 (& 기호)}}}
r1
108----
r41
109& 기호 테스트 (둘 다 true) : 출력된다.
r1
110{{{#!if (1==1)&(0==0)
r24
111출력 (& 기호)}}}
r23
112----
r41
113true & true : 출력된다.
r23
114{{{#!if true & true
r24
115출력 (& 기호)}}}
r23
116----
r41
117true & false : 출력되지 않는다.
r23
118{{{#!if true & false
r24
119출력 (& 기호)}}}
r23
120----
r41
121false & true : 출력되지 않는다.
r23
122{{{#!if false & true
r24
123출력 (& 기호)}}}
r23
124----
r41
125false & false : 출력되지 않는다.
r23
126{{{#!if false & false
r24
127출력 (& 기호)}}}
128----
129결론 : & 기호는 논리연산 AND
r42
130=== 비트 연산 ===
131& 기호가 2진수 비트곱으로도 처리되는 것은, |기호와 같이 true와 false 진리값이 각각 1, 0인 논리를 시스템상에서 나타내므로
132|| || case1 || case2 || case3 || case4 ||
133|| A || 1 || 1 || 0 || 0 ||
134|| B || 1 || 0 || 1 || 0 ||
135|| A&B || 1 || 0 || 0 || 0 ||
136표와 같이 처리되기 때문으로 보인다. (1을 true, 0을 false 놓고 보면 | 연산 결과가 같다.)
137
138----
139|| 10진수 || 2^^^4^^^ || 2^^^3^^^ || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
140|| 25 || 1 || 1 || 0 || 0 || 1 ||
141|| 19 || 1 || 0 || 0 || 1 || 1 ||
142|| (25&19) = 17 || 1 || 0 || 0 || 0 || 1 ||
143if (25&19)=17 : 출력된다.
144{{{#!if (25&19)==17
145출력}}}
146----
147if (25&19)=19 : 2^^^1^^^의 자릿수가 틀려서 출력되지 않는다.
148{{{#!if (25&19)==19
149출력}}}
150
r24
151== 부등호 테스트 ==
r41
152연산 테스트 (음수도 읽는 모양이다.)
r1
153{{{#!if (1<2)&(2>=-3)
r24
154출력 (연산 테스트)}}}
r1
155----
r41
156geq('''g'''reater than or '''eq'''ual to)를 >=로 입력 안 하고 =>로 입력하면 깨진다.
r1
157{{{#!if (1<2)&(2=>-3)
r24
158출력 (연산 테스트)}}}
r1
159----
r41
160geq 동작 가능 인증 (if 1>=1 걸면 true로 나온다.)
r8
161{{{#!if (1>=1)
r24
162출력 (연산 테스트)}}}
r1
163----
r41
164leq('''l'''ess than or '''eq'''ual to)를 <=로 입력 안 하고 =<로 입력하면 깨진다.
r8
165{{{#!if -100=<99
r24
166출력 (연산 테스트)}}}
r1
167----
r41
168leq(<=) 로 해도 나오지 않다가 ---잠수함 패치로--- fix된 모양이다.
r8
169{{{#!if -100<=99
r24
170출력 (연산 테스트)}}}
r8
171----
r41
172leq 동작 가능 인증 (if 1<=1 걸면 true로 나온다.)
r8
173{{{#!if (1<=1)
r24
174출력 (연산 테스트)}}}
r8
175----
r1
176< and >=
177{{{#!if (-100<-99)&(-98>=-99)
r24
178출력 (연산 테스트)}}}
r1
179----
r41
180\> 부등호도 가능하다.
r1
181{{{#!if 10>9
r24
182출력 (연산 테스트)}}}
r1
183----
184(true and true) or (false and true)
185{{{#!if ((4==4)&(-2>-3))|((1>0)&(2<4))
r24
186출력 (연산 테스트)}}}
r9
187----
r41
188* (times) 기호 : 출력된다.
r9
189{{{#!if 2*3==6
r24
190출력 (연산 테스트)}}}
r9
191----
r41
192* 식 을 틀리게 만들면 출력되지 않는다. (따라서 *는 지원되는 모양이다.)
r12
193{{{#!if 2*3==5
r24
194출력 (연산 테스트)}}}
r12
195----
r9
196/ (devided by)
197{{{#!if 10/5==2
r24
198출력 (연산 테스트)}}}
r10
199----
r41
200/ 식을 틀리게 만들면 나오지 않는다. (따라서 /는 지원되는 모양이다.)
r12
201{{{#!if 10/5==1
r24
202출력 (연산 테스트)}}}
r25
203----
r41
204결론 : * / > >= < <= 연산기호는 지원되는 모양이다.
r24
205== ^ 기호 테스트 ==
206^ (exponent?)
r10
207{{{#!if 10^4==10000
r24
208출력 (^기호)}}}
r11
209----
210^(1/2)
211{{{#!if 1024^(1/2)==32
r24
212출력 (^기호)}}}
r12
213----
r41
214^ 틀리게 해도 나오는 것으로 봐서는 지원되지 않는 모양이다?[* 지수가 아니라 프로그래밍 전용 연산]
r12
215{{{#!if 10^4==9999
r24
216출력 (^기호)}}}
217----
r41
218true ^ true : 출력되지 않는다.
r24
219{{{#!if true ^ true
220출력 (^ 기호)}}}
221----
r41
222true ^ false : 출력된다.
r24
223{{{#!if true ^ false
224출력 (^ 기호)}}}
225----
r41
226false ^ true : 출력된다.
r24
227{{{#!if false ^ true
228출력 (^ 기호)}}}
229----
r41
230false & false : 출력되지 않는다.
r24
231{{{#!if false ^ false
232출력 (^ 기호)}}}
233----
r25
234결론 : ^는 논리연산 XOR
235---그럼 XAND도 있을텐데---
r27
236== !기호 테스트 ==
r41
237false == false : 출력된다.
r27
238{{{#!if false==false
239출력 (f=f)}}}
240----
r41
241false == true : 출력되지 않는다.
r27
242{{{#!if false==true
243출력 (f=f)}}}
244----
r41
245false != true : 출력된다.
r27
246{{{#!if false != true
247출력 (!= 기호)}}}
248----
r41
2491!=0 : 출력된다.
r27
250{{{#!if 1!=0
251출력 (1!=0)}}}
252----
r41
2531 !=0 : 출력된다.
r28
254{{{#!if 1 !=0
255출력 (1 !=0)}}}
256----
r41
2571 !==0 : 출력되지 않는다.
r28
258{{{#!if 1 !==0
259출력 (1!==0)}}}
260----
r41
2611<0 : 출력되지 않는다.
r28
262{{{#!if 1<0
263출력 (1<0)}}}
264----
r41
2651 !< 0 : 출력되지 않는다.
r28
266{{{#!if 1 !< 0
267출력 (1!< 0)}}}
268----
r41
2691 !(<) 0 : 출력되지 않는다. 부등호에 걸 수 있는 기호가 아니라서 깨진 모양이다.
r32
270{{{#!if 1 !(<) 0
271출력 (1!(<) 0)}}}
272----
r41
273!(1<0) : 출력된다.
r28
274{{{#!if !(1<0)
275출력 !(1<0)}}}
276----
r41
277!(true and true) : 출력되지 않는다.
r27
278{{{#!if !(true&true)
279출력 !(t&t)}}}
280----
r41
281!(true and false) : 출력된다.
r27
282{{{#!if !(true&false)
283출력 !(t&f)}}}
284----
r41
285!(false and false) : 출력된다.
r27
286{{{#!if !(false&false)
287출력 !(f&f)}}}
r41
288그냥 and 식 전체에 ! 씌우면 nand가 된다.
r28
289----
r29
290!(true ^ true)
291{{{#!if !(true^true)
292출력 !(t^t)}}}
293----
294!(true ^ false)
295{{{#!if !(true^false)
296출력 !(t^f)}}}
297----
298!(false ^ true)
299{{{#!if !(false^true)
300출력 !(f^t)}}}
301----
r28
302!(false ^ false)
303{{{#!if !(false^false)
304출력 !(f^f)}}}
r31
305그냥 ^ 식 전체에 ! 씌우면 xand(nxor)이다.
306----
r41
307!(!true) : 출력된다 (not of not)
r31
308{{{#!if !(!true)
309출력 !(!t)}}}
310----
r41
311!!true : 출력되지 않는다. !는 범위를 입력해줘야 동작되는 모양.
r31
312{{{#!if !!true)
313출력 (!!t)}}}
314----
r41
315not of not of not of true : 출력되지 않는다.
r31
316{{{#!if !(!(!true))
317출력 !(!(!t))}}}
318----
r41
319not of not of not of not of true ---사각형안의사각형안의--- : 출력된다.
r31
320{{{#!if !(!(!(!true)))
321출력 !(!(!(!t)))}}}
322----
323결론 : !는 논리연산 NOT이고, 범위를 지정해줘야 동작된다.
r36
324
r37
325== ~기호 테스트 ==
r41
326~false : 출력된다.
r36
327{{{#!if ~false
r38
328출력 ~f}}}
r37
329----
r41
330~(~true) : 출력된다.
r37
331{{{#!if ~(~true)
332출력 ~(~t)}}}
333----
r41
334~(!(~(!true))) : 출력된다.
r37
335{{{#!if ~(!(~(!true)))
336출력 ~(!(~(!t)))}}}
337----
r41
338~true : 출력된다.
r37
339{{{#!if ~true
340출력 ~t}}}
341----
r41
342~(true) : 출력된다.
r37
343{{{#!if ~(true)
344출력 ~(t)}}}
345----
r41
346(~true) : 출력된다.
r38
347{{{#!if (~true)
348출력 (~t)}}}
349----
r41
350~~true : 출력된다.
r37
351{{{#!if ~~true
352출력 ~~t}}}
353----
r41
354~(-1)=0 : 출력된다.
r38
355{{{#!if ~(-1)==0
356출력}}}
357----
r41
358~(-1)=1 : 출력되지 않는다.
r38
359{{{#!if ~(-1)==1
360출력}}}
361----
r41
362~(-2)=1 : 출력된다.
r39
363{{{#!if ~(-2)==1
364출력}}}
365----
r41
366~false=false : 출력되지 않는다.
r38
367{{{#!if ~false==false
368출력}}}
369----
r41
370~false=true : 출력되지 않는다.
r38
371{{{#!if ~false==true
372출력}}}
373----
r41
374~(!(true))=false : 출력되지 않는다.
r38
375{{{#!if ~(!true)==false
376출력}}}
377----
r41
378결론 : ~ 기호는 논리 연산으로는 동작되지 않는다.
r40
379
380다만 위의 ~(-1)==1 을 가져와서 비트 연산이 참인지 거짓인지 나오는 결과를 두고 논리식을 만들기는 가능하다.
r41
381!(~(-1)==1) : false 부정이므로 출력된다.
r40
382{{{#!if !(~(-1)==1)
383출력}}}
r42
384----
385---만약에 if ~A|B을 해본다면?---
386
r24
387== 역링크 등 기타 테스트 ==
r15
388||If true [[틀:토론]] include[br]{{{#!if true
389[include(틀:토론)]}}}||
390||If false [[틀:폐쇄]] include[br]
r13
391{{{#!if false
r15
392[include(틀:폐쇄)]}}}||
393출력이 되지 않는 틀은 역링크를 조회해보면 include로 역링크가 걸리지 않는다.
r13
394----
r15
395||If true [[:분류:나무마크 문법|분류:나무마크 문법]][br]{{{#!if true
396[[분류:나무마크 문법]]}}}||
397||If false [[:분류:위키]][br]{{{#!if false
398[[분류:위키]]}}}||
r16
399출력이 되지 않는 분류로는 해당 문서가 포함되지 않는다.
r17
400----
401||If true \#\#\@[br]{{{#!if true
r18
402##@if true
r17
403}}}||
404||If false \#\#\@[br]{{{#!if false
r18
405##@if false
r17
406}}}||
r18
407\#\#\@ 테스트. If 문구 사이에 \#\#\@를 끼워넣어도 편집창 상단 표시에 출력되어 나온다.
r17
408----
409{{{#!if false
410이 내용은 false라서 나오지 않습니다.
411예시 :
412토론 합의 내용
413 * 문서명(표제어)을 A로 정한다. (/threadslug1 토론 합의)
414 * 문서의 B 서술을 존치한다. (/threadslug2 토론 합의)
415 * 문서의 C 서술을 삭제한다. (/threadslug3 토론 합의)
416}}}
r41
417출력되지 않는 점을 이용하면 [[\#\#주석]] 못지 않게 활용할 수 있을 듯하다.
r24
418----
r26
419== 메모 ==
420If 조건문에 함수를 넣을 수 있을까?
421예 : dday를 넣어서 누구누구 운영자가 재직 며칠이 되었음을 적을 수 있음.
r1
422== 결론 ==
423||{{{#!wiki style="margin: 0 0 0 -0.25em; display: inline;"
424{{{ {{}}}}}}{{{#!wiki style="margin: 0 0 0 -0.25em; display: inline;"
425{{{{#!if }}}}}}{{{#!wiki style="margin: 0 0 0 -0.25em; display: inline;"
426{{{#blue {{{(논리식)}}}}}}}}}
427{{{#!wiki style="margin: 0 0 0 -0.25em; display: inline;"
428{{{#green {{{(true이면 출력할 내용)}}}}}}}}}{{{#!wiki style="margin: 0 -0.625em 0 -0.25em; display: inline;"
429{{{}} }}}}}}{{{#!wiki style="margin: 0 0 0 -0.25em; display: inline;"
430{{{} }}}}}}||
431|| 추정되는 문법 ||
r41
432If구문은 고장난 구문(문법)은 아니지만, ---잠수함 패치로 인해--- 변수를 연결할 수 있는 입력방법을 찾아야 한다. 조건부에 텍스트값, 숫자값, 논리값(true 또는 false)은 지원되는 입력으로 보인다. 연산할 값의 종류와 연산하여 나오는 값의 종류에 알맞은 기호만 쓴다면 크게 원하는 방향에서 벗어나지 않게 쓸 수 있다.