r44
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 ||
r43
136표와 같이 처리되기 때문으로 보인다. (1을 true, 0을 false 놓고 보면 & 연산 결과가 같다.)
r42
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
r43
151----
152|| 10진수 || 2^^^4^^^ || 2^^^3^^^ || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
153|| 20 || 1 || 0 || 1 || 0 || 0 ||
154|| 11 || 0 || 1 || 0 || 1 || 1 ||
155|| (20&11) = 0 || 0 || 0 || 0 || 0 || 0 ||
156if (20&11)=0
157{{{#!if (20&11)==0
158출력}}}
159----
r24
160== 부등호 테스트 ==
r41
161연산 테스트 (음수도 읽는 모양이다.)
r1
162{{{#!if (1<2)&(2>=-3)
r24
163출력 (연산 테스트)}}}
r1
164----
r41
165geq('''g'''reater than or '''eq'''ual to)를 >=로 입력 안 하고 =>로 입력하면 깨진다.
r1
166{{{#!if (1<2)&(2=>-3)
r24
167출력 (연산 테스트)}}}
r1
168----
r41
169geq 동작 가능 인증 (if 1>=1 걸면 true로 나온다.)
r8
170{{{#!if (1>=1)
r24
171출력 (연산 테스트)}}}
r1
172----
r41
173leq('''l'''ess than or '''eq'''ual to)를 <=로 입력 안 하고 =<로 입력하면 깨진다.
r8
174{{{#!if -100=<99
r24
175출력 (연산 테스트)}}}
r1
176----
r41
177leq(<=) 로 해도 나오지 않다가 ---잠수함 패치로--- fix된 모양이다.
r8
178{{{#!if -100<=99
r24
179출력 (연산 테스트)}}}
r8
180----
r41
181leq 동작 가능 인증 (if 1<=1 걸면 true로 나온다.)
r8
182{{{#!if (1<=1)
r24
183출력 (연산 테스트)}}}
r8
184----
r1
185< and >=
186{{{#!if (-100<-99)&(-98>=-99)
r24
187출력 (연산 테스트)}}}
r1
188----
r41
189\> 부등호도 가능하다.
r1
190{{{#!if 10>9
r24
191출력 (연산 테스트)}}}
r1
192----
193(true and true) or (false and true)
194{{{#!if ((4==4)&(-2>-3))|((1>0)&(2<4))
r24
195출력 (연산 테스트)}}}
r9
196----
r41
197* (times) 기호 : 출력된다.
r9
198{{{#!if 2*3==6
r24
199출력 (연산 테스트)}}}
r9
200----
r41
201* 식 을 틀리게 만들면 출력되지 않는다. (따라서 *는 지원되는 모양이다.)
r12
202{{{#!if 2*3==5
r24
203출력 (연산 테스트)}}}
r12
204----
r9
205/ (devided by)
206{{{#!if 10/5==2
r24
207출력 (연산 테스트)}}}
r10
208----
r41
209/ 식을 틀리게 만들면 나오지 않는다. (따라서 /는 지원되는 모양이다.)
r12
210{{{#!if 10/5==1
r24
211출력 (연산 테스트)}}}
r25
212----
r41
213결론 : * / > >= < <= 연산기호는 지원되는 모양이다.
r24
214== ^ 기호 테스트 ==
215^ (exponent?)
r10
216{{{#!if 10^4==10000
r24
217출력 (^기호)}}}
r11
218----
219^(1/2)
220{{{#!if 1024^(1/2)==32
r24
221출력 (^기호)}}}
r12
222----
r41
223^ 틀리게 해도 나오는 것으로 봐서는 지원되지 않는 모양이다?[* 지수가 아니라 프로그래밍 전용 연산]
r12
224{{{#!if 10^4==9999
r24
225출력 (^기호)}}}
226----
r41
227true ^ true : 출력되지 않는다.
r24
228{{{#!if true ^ true
229출력 (^ 기호)}}}
230----
r41
231true ^ false : 출력된다.
r24
232{{{#!if true ^ false
233출력 (^ 기호)}}}
234----
r41
235false ^ true : 출력된다.
r24
236{{{#!if false ^ true
237출력 (^ 기호)}}}
238----
r41
239false & false : 출력되지 않는다.
r24
240{{{#!if false ^ false
241출력 (^ 기호)}}}
242----
r25
243결론 : ^는 논리연산 XOR
244---그럼 XAND도 있을텐데---
r27
245== !기호 테스트 ==
r41
246false == false : 출력된다.
r27
247{{{#!if false==false
248출력 (f=f)}}}
249----
r41
250false == true : 출력되지 않는다.
r27
251{{{#!if false==true
252출력 (f=f)}}}
253----
r41
254false != true : 출력된다.
r27
255{{{#!if false != true
256출력 (!= 기호)}}}
257----
r41
2581!=0 : 출력된다.
r27
259{{{#!if 1!=0
260출력 (1!=0)}}}
261----
r41
2621 !=0 : 출력된다.
r28
263{{{#!if 1 !=0
264출력 (1 !=0)}}}
265----
r41
2661 !==0 : 출력되지 않는다.
r28
267{{{#!if 1 !==0
268출력 (1!==0)}}}
269----
r41
2701<0 : 출력되지 않는다.
r28
271{{{#!if 1<0
272출력 (1<0)}}}
273----
r41
2741 !< 0 : 출력되지 않는다.
r28
275{{{#!if 1 !< 0
276출력 (1!< 0)}}}
277----
r41
2781 !(<) 0 : 출력되지 않는다. 부등호에 걸 수 있는 기호가 아니라서 깨진 모양이다.
r32
279{{{#!if 1 !(<) 0
280출력 (1!(<) 0)}}}
281----
r41
282!(1<0) : 출력된다.
r28
283{{{#!if !(1<0)
284출력 !(1<0)}}}
285----
r41
286!(true and true) : 출력되지 않는다.
r27
287{{{#!if !(true&true)
288출력 !(t&t)}}}
289----
r41
290!(true and false) : 출력된다.
r27
291{{{#!if !(true&false)
292출력 !(t&f)}}}
293----
r41
294!(false and false) : 출력된다.
r27
295{{{#!if !(false&false)
296출력 !(f&f)}}}
r41
297그냥 and 식 전체에 ! 씌우면 nand가 된다.
r28
298----
r29
299!(true ^ true)
300{{{#!if !(true^true)
301출력 !(t^t)}}}
302----
303!(true ^ false)
304{{{#!if !(true^false)
305출력 !(t^f)}}}
306----
307!(false ^ true)
308{{{#!if !(false^true)
309출력 !(f^t)}}}
310----
r28
311!(false ^ false)
312{{{#!if !(false^false)
313출력 !(f^f)}}}
r31
314그냥 ^ 식 전체에 ! 씌우면 xand(nxor)이다.
315----
r41
316!(!true) : 출력된다 (not of not)
r31
317{{{#!if !(!true)
318출력 !(!t)}}}
319----
r41
320!!true : 출력되지 않는다. !는 범위를 입력해줘야 동작되는 모양.
r31
321{{{#!if !!true)
322출력 (!!t)}}}
323----
r41
324not of not of not of true : 출력되지 않는다.
r31
325{{{#!if !(!(!true))
326출력 !(!(!t))}}}
327----
r41
328not of not of not of not of true ---사각형안의사각형안의--- : 출력된다.
r31
329{{{#!if !(!(!(!true)))
330출력 !(!(!(!t)))}}}
331----
332결론 : !는 논리연산 NOT이고, 범위를 지정해줘야 동작된다.
r36
333
r37
334== ~기호 테스트 ==
r41
335~false : 출력된다.
r36
336{{{#!if ~false
r38
337출력 ~f}}}
r37
338----
r41
339~(~true) : 출력된다.
r37
340{{{#!if ~(~true)
341출력 ~(~t)}}}
342----
r41
343~(!(~(!true))) : 출력된다.
r37
344{{{#!if ~(!(~(!true)))
345출력 ~(!(~(!t)))}}}
346----
r41
347~true : 출력된다.
r37
348{{{#!if ~true
349출력 ~t}}}
350----
r41
351~(true) : 출력된다.
r37
352{{{#!if ~(true)
353출력 ~(t)}}}
354----
r41
355(~true) : 출력된다.
r38
356{{{#!if (~true)
357출력 (~t)}}}
358----
r41
359~~true : 출력된다.
r37
360{{{#!if ~~true
361출력 ~~t}}}
362----
r41
363~(-1)=0 : 출력된다.
r38
364{{{#!if ~(-1)==0
365출력}}}
366----
r41
367~(-1)=1 : 출력되지 않는다.
r38
368{{{#!if ~(-1)==1
369출력}}}
370----
r41
371~(-2)=1 : 출력된다.
r39
372{{{#!if ~(-2)==1
373출력}}}
374----
r41
375~false=false : 출력되지 않는다.
r38
376{{{#!if ~false==false
377출력}}}
378----
r41
379~false=true : 출력되지 않는다.
r38
380{{{#!if ~false==true
381출력}}}
382----
r41
383~(!(true))=false : 출력되지 않는다.
r38
384{{{#!if ~(!true)==false
385출력}}}
386----
r41
387결론 : ~ 기호는 논리 연산으로는 동작되지 않는다.
r40
388
389다만 위의 ~(-1)==1 을 가져와서 비트 연산이 참인지 거짓인지 나오는 결과를 두고 논리식을 만들기는 가능하다.
r41
390!(~(-1)==1) : false 부정이므로 출력된다.
r40
391{{{#!if !(~(-1)==1)
392출력}}}
r42
393----
394---만약에 if ~A|B을 해본다면?---
395
r24
396== 역링크 등 기타 테스트 ==
r15
397||If true [[틀:토론]] include[br]{{{#!if true
398[include(틀:토론)]}}}||
399||If false [[틀:폐쇄]] include[br]
r13
400{{{#!if false
r15
401[include(틀:폐쇄)]}}}||
402출력이 되지 않는 틀은 역링크를 조회해보면 include로 역링크가 걸리지 않는다.
r13
403----
r15
404||If true [[:분류:나무마크 문법|분류:나무마크 문법]][br]{{{#!if true
405[[분류:나무마크 문법]]}}}||
406||If false [[:분류:위키]][br]{{{#!if false
407[[분류:위키]]}}}||
r16
408출력이 되지 않는 분류로는 해당 문서가 포함되지 않는다.
r17
409----
410||If true \#\#\@[br]{{{#!if true
r18
411##@if true
r17
412}}}||
413||If false \#\#\@[br]{{{#!if false
r18
414##@if false
r17
415}}}||
r18
416\#\#\@ 테스트. If 문구 사이에 \#\#\@를 끼워넣어도 편집창 상단 표시에 출력되어 나온다.
r17
417----
418{{{#!if false
419이 내용은 false라서 나오지 않습니다.
420예시 :
421토론 합의 내용
422 * 문서명(표제어)을 A로 정한다. (/threadslug1 토론 합의)
423 * 문서의 B 서술을 존치한다. (/threadslug2 토론 합의)
424 * 문서의 C 서술을 삭제한다. (/threadslug3 토론 합의)
425}}}
r41
426출력되지 않는 점을 이용하면 [[\#\#주석]] 못지 않게 활용할 수 있을 듯하다.
r24
427----
r44
428지수의 지수의 지수
429{{{+2 2^^^{{{#!wiki style="display:inline;"
4302^^^2^^^}}}^^^=16}}} : 출력된다.
431{{{#!if 2.0**(2.0**2.0)==0**1+16
432출력}}}
433----
434{{{+1 2^^^{{{#!wiki style="display:inline;"
4352^^^2^^^}}}^^^=15}}}로 하면 출력되지 않는다.
436{{{#!if 2.0**(2.0**2.0)==0**1+15
437출력}}}
438----
439지수의 지수의 지수의 지수
440{{{+2 2^^^{{{#!wiki style="display:inline;"
4412^^^{{{#!wiki style="display:inline;"
4422^^^2^^^}}}^^^}}}^^^=2^^^16^^^=65536}}} : 출력된다.
443{{{#!if 2.0**(2.0**(2.0**2.0))==0**1+65536
444출력}}}
445----
446{{{+2 2^^^{{{#!wiki style="display:inline;"
4472^^^{{{#!wiki style="display:inline;"
4482^^^2^^^}}}^^^}}}^^^=2^^^16^^^=65535}}} : 출력되지 않는다.
449{{{#!if 2.0**(2.0**(2.0**2.0))==0**1+65535
450출력}}}
451----
452[math(\left(1^{{1}\over{2}}\right)^{2}=1)]
453{{{#!if (1.0**0.5)**2.0==0**1+1
454출력}}}
455----
456[math(\left((-1)^{{1}\over{2}}\right)^{2}=-1)] : [[허수]]는 불가능한 모양.
457{{{#!if (-1.0**0.5)**2.0==0**1-1
458출력}}}
459
r26
460== 메모 ==
461If 조건문에 함수를 넣을 수 있을까?
462예 : dday를 넣어서 누구누구 운영자가 재직 며칠이 되었음을 적을 수 있음.
r1
463== 결론 ==
464||{{{#!wiki style="margin: 0 0 0 -0.25em; display: inline;"
465{{{ {{}}}}}}{{{#!wiki style="margin: 0 0 0 -0.25em; display: inline;"
466{{{{#!if }}}}}}{{{#!wiki style="margin: 0 0 0 -0.25em; display: inline;"
467{{{#blue {{{(논리식)}}}}}}}}}
468{{{#!wiki style="margin: 0 0 0 -0.25em; display: inline;"
469{{{#green {{{(true이면 출력할 내용)}}}}}}}}}{{{#!wiki style="margin: 0 -0.625em 0 -0.25em; display: inline;"
470{{{}} }}}}}}{{{#!wiki style="margin: 0 0 0 -0.25em; display: inline;"
471{{{} }}}}}}||
472|| 추정되는 문법 ||
r41
473If구문은 고장난 구문(문법)은 아니지만, ---잠수함 패치로 인해--- 변수를 연결할 수 있는 입력방법을 찾아야 한다. 조건부에 텍스트값, 숫자값, 논리값(true 또는 false)은 지원되는 입력으로 보인다. 연산할 값의 종류와 연산하여 나오는 값의 종류에 알맞은 기호만 쓴다면 크게 원하는 방향에서 벗어나지 않게 쓸 수 있다.