r94
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
r81
6if 구문(if 문법) 테스트용 [[위키위키]] 문서.
7편집하거나 검증할 때 RAW(원문)를 참조할 수 있다.
8if 구문은 문서에서만이 아니라 토론 스레드에도 지원된다.
r24
9== true, false ==
r1
10{{{#!undefined_command @a@==1
111}}}
12----
r54
13if true 1 (정의되지 않는 #!(Shebang) 구문(문법)이면 리터럴로 출력되어야 하겠으나 if는 그렇지 않다.[* 다만 아카라이브 채널위키에는 구현되어 있지 않아서 #!if까지 문구로 나온다.])
r1
14{{{#!if true
r41
151 (true는 출력된다.)}}}
r1
16----
17if false 1
18{{{#!if false
r41
191 (false는 출력되지 않는다.)}}}
r63
20
r82
21{{{#orange 결론}}} : true는 논리값 true로 동작된다.
r88
22== 매개변수, this 테스트 ==
r22
23[include(틀:상세 내용, 설명대상=매개변수 대상, 문서명=테스트:If문법/include 대상)]
24[include(틀:상세 내용, 설명대상=매개변수 대상의 include 테스트 결과, 문서명=테스트:If문법/include 결과)]
r89
25
r94
26---??? : This is blasphemy! This is madness!---
27{{{#!if (this.is == "Sparta")
28[youtube(4Prc1UfuokY, start=104)]
29...
30Madness...?
31THIS IS SPARTA!!!}}}
r92
32
r93
33{{{#orange 결론 1 :}}} {{{#!wiki style="display: inline; font-family: monospace;"
r89
34this\[{{{#orange \'}}}{{{#green 변수명}}}{{{#orange \'}}}\]}}} (작은따옴표), {{{#!wiki style="display: inline; font-family: monospace;"
r90
35this\[{{{#orange \"}}}{{{#green 변수명}}}{{{#orange \"}}}\]}}} (큰따옴표)는 텍스트값으로 출력된다. {{{#!wiki style="display: inline; font-family: monospace;"
36this\[{{{#orange \+}}}{{{#green 변수명}}}\]}}}은 올바른 입력이 아니다.
r93
37{{{#orange 결론 2 :}}} {{{#!wiki style="display: inline; font-family: monospace;"
r94
38this{{{#orange \.}}}{{{#green 변수명}}}}}}은 양식만 잘 맞추면 텍스트값이나 숫자값으로 출력된다.
r53
39== | 기호 테스트 ==
r42
40=== 논리 연산 ===
r53
41| 기호 테스트 (둘 다 true)
r1
42{{{#!if (1==1)|(1==0)
r24
43출력 (| 기호)}}}
r1
44----
r53
45| 기호 테스트 (둘 중 한 쪽 false)
r1
46{{{#!if (1==2)|(2==2)
r24
47출력 (| 기호)}}}
r1
48----
r53
49| 기호 테스트 (둘 다 false)
r1
50{{{#!if (1==2)|(1==0)
r24
51출력 (| 기호)}}}
r23
52----
r41
53true | true : 출력된다.
r23
54{{{#!if true | true
r24
55출력(| 기호)}}}
r23
56----
r41
57true | false : 출력된다.
r23
58{{{#!if true | false
r24
59출력 (| 기호)}}}
r23
60----
r41
61false | true : 출력된다.
r23
62{{{#!if false | true
r24
63출력 (| 기호)}}}
r23
64----
r41
65false | false : 출력되지 않는다.
r23
66{{{#!if false | false
r24
67출력 (| 기호)}}}
68----
69결론 : | 기호는 논리연산 OR
r42
70
71----
72true || true : 출력된다.
73{{{#!if true || true
74출력 (| 기호)}}}
75----
76true ||| true : 출력되지 않는다.
77{{{#!if true ||| true
78출력 (| 기호)}}}
79
r35
80=== 비트 연산 ===
r42
81| 기호가 2진수 비트합으로도 처리되는 것은, true와 false 진리값이 각각 1, 0인 논리를 시스템상에서 나타내므로
r33
82|| || case1 || case2 || case3 || case4 ||
83|| A || 1 || 1 || 0 || 0 ||
84|| B || 1 || 0 || 1 || 0 ||
85|| A|B || 1 || 1 || 1 || 0 ||
r42
86표와 같이 처리되기 때문으로 보인다. (1을 true, 0을 false 놓고 보면 | 연산 결과가 같다.)
r33
87
r41
88그래서 이진법도 각 자릿수별로 | 연산 비교가 가능한 것으로 보인다.
89가령 5|3을 보자면 이진법으로 변환한 값의 각 자릿수에 따라 연산이 된다.
r33
90|| 10진수 || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
91|| 5 = || 1 || 0 || 1 ||
92|| 3 = || 0 || 1 || 1 ||
93|| (5|3) = 7 || 1 || 1 || 1 ||
94----
r41
95(5|3)=7 테스트 : 출력된다.
r33
96{{{#!if (5|3) ==7
97출력}}}
98----
r41
99(5|3)=6 테스트 : 출력되지 않는다.
r33
100{{{#!if (5|3) ==6
101출력}}}
r63
102그래서 (5|3)=7 을 조건부로 둔 if 구문(문법)을 걸어 놓으면 true로 동작되는 것으로 보인다.
r33
103----
104(9|5)=13 테스트
r42
105|| 10진수 || 2^^^3^^^ || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
106|| 9 = || 1 || 0 || 0 || 1 ||
107|| 5 = || 0 || 1 || 0 || 1 ||
108|| (9|5) = 13 || 1 || 1 || 0 || 1 ||
r33
109{{{#!if (9|5) ==13
110출력 (1101)}}}
111----
r41
112(9|5)=12 테스트 : 일(2^^^0^^^)의 자릿수가 틀려서 출력되지 않는다.
r33
113{{{#!if (9|5) ==12
114출력 (1101)}}}
r42
115
r24
116== & 기호 테스트 ==
r42
117=== 논리 연산 ===
r53
118& 기호 테스트 (한 쪽 false) : 출력되지 않는다.
r1
119{{{#!if (1==1)&(1==0)
r24
120출력 (& 기호)}}}
r1
121----
r53
122& 기호 테스트 (한 쪽 false) : 출력되지 않는다.
r1
123{{{#!if (1==0)&(3==3)
r24
124출력 (& 기호)}}}
r1
125----
r41
126& 기호 테스트 (둘 다 true) : 출력된다.
r1
127{{{#!if (1==1)&(0==0)
r24
128출력 (& 기호)}}}
r23
129----
r41
130true & true : 출력된다.
r23
131{{{#!if true & true
r24
132출력 (& 기호)}}}
r23
133----
r41
134true & false : 출력되지 않는다.
r23
135{{{#!if true & false
r24
136출력 (& 기호)}}}
r23
137----
r41
138false & true : 출력되지 않는다.
r23
139{{{#!if false & true
r24
140출력 (& 기호)}}}
r23
141----
r41
142false & false : 출력되지 않는다.
r23
143{{{#!if false & false
r24
144출력 (& 기호)}}}
145----
r63
146
r82
147{{{#orange 결론}}} : & 기호는 논리연산 AND
148
r42
149=== 비트 연산 ===
150& 기호가 2진수 비트곱으로도 처리되는 것은, |기호와 같이 true와 false 진리값이 각각 1, 0인 논리를 시스템상에서 나타내므로
151|| || case1 || case2 || case3 || case4 ||
152|| A || 1 || 1 || 0 || 0 ||
153|| B || 1 || 0 || 1 || 0 ||
154|| A&B || 1 || 0 || 0 || 0 ||
r43
155표와 같이 처리되기 때문으로 보인다. (1을 true, 0을 false 놓고 보면 & 연산 결과가 같다.)
r42
156
157----
158|| 10진수 || 2^^^4^^^ || 2^^^3^^^ || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
159|| 25 || 1 || 1 || 0 || 0 || 1 ||
160|| 19 || 1 || 0 || 0 || 1 || 1 ||
161|| (25&19) = 17 || 1 || 0 || 0 || 0 || 1 ||
162if (25&19)=17 : 출력된다.
163{{{#!if (25&19)==17
164출력}}}
165----
166if (25&19)=19 : 2^^^1^^^의 자릿수가 틀려서 출력되지 않는다.
167{{{#!if (25&19)==19
168출력}}}
169
r43
170----
171|| 10진수 || 2^^^4^^^ || 2^^^3^^^ || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
172|| 20 || 1 || 0 || 1 || 0 || 0 ||
173|| 11 || 0 || 1 || 0 || 1 || 1 ||
174|| (20&11) = 0 || 0 || 0 || 0 || 0 || 0 ||
175if (20&11)=0
176{{{#!if (20&11)==0
177출력}}}
178----
r63
179
r24
180== 부등호 테스트 ==
r41
181연산 테스트 (음수도 읽는 모양이다.)
r1
182{{{#!if (1<2)&(2>=-3)
r24
183출력 (연산 테스트)}}}
r1
184----
r41
185geq('''g'''reater than or '''eq'''ual to)를 >=로 입력 안 하고 =>로 입력하면 깨진다.
r1
186{{{#!if (1<2)&(2=>-3)
r24
187출력 (연산 테스트)}}}
r1
188----
r41
189geq 동작 가능 인증 (if 1>=1 걸면 true로 나온다.)
r8
190{{{#!if (1>=1)
r24
191출력 (연산 테스트)}}}
r1
192----
r41
193leq('''l'''ess than or '''eq'''ual to)를 <=로 입력 안 하고 =<로 입력하면 깨진다.
r8
194{{{#!if -100=<99
r24
195출력 (연산 테스트)}}}
r1
196----
r41
197leq(<=) 로 해도 나오지 않다가 ---잠수함 패치로--- fix된 모양이다.
r8
198{{{#!if -100<=99
r24
199출력 (연산 테스트)}}}
r8
200----
r41
201leq 동작 가능 인증 (if 1<=1 걸면 true로 나온다.)
r8
202{{{#!if (1<=1)
r24
203출력 (연산 테스트)}}}
r8
204----
r1
205< and >=
206{{{#!if (-100<-99)&(-98>=-99)
r24
207출력 (연산 테스트)}}}
r1
208----
r41
209\> 부등호도 가능하다.
r1
210{{{#!if 10>9
r24
211출력 (연산 테스트)}}}
r1
212----
213(true and true) or (false and true)
214{{{#!if ((4==4)&(-2>-3))|((1>0)&(2<4))
r24
215출력 (연산 테스트)}}}
r9
216----
r41
217* (times) 기호 : 출력된다.
r9
218{{{#!if 2*3==6
r24
219출력 (연산 테스트)}}}
r9
220----
r41
221* 식 을 틀리게 만들면 출력되지 않는다. (따라서 *는 지원되는 모양이다.)
r12
222{{{#!if 2*3==5
r24
223출력 (연산 테스트)}}}
r12
224----
r9
225/ (devided by)
226{{{#!if 10/5==2
r24
227출력 (연산 테스트)}}}
r10
228----
r41
229/ 식을 틀리게 만들면 나오지 않는다. (따라서 /는 지원되는 모양이다.)
r12
230{{{#!if 10/5==1
r24
231출력 (연산 테스트)}}}
r25
232----
r82
233{{{#orange 결론}}} : * / > >= < <= 연산기호는 지원되는 모양이다.
r63
234
r24
235== ^ 기호 테스트 ==
r60
236=== 논리 연산 ===
r24
237^ (exponent?)
r10
238{{{#!if 10^4==10000
r24
239출력 (^기호)}}}
r11
240----
241^(1/2)
242{{{#!if 1024^(1/2)==32
r24
243출력 (^기호)}}}
r12
244----
r41
245^ 틀리게 해도 나오는 것으로 봐서는 지원되지 않는 모양이다?[* 지수가 아니라 프로그래밍 전용 연산]
r12
246{{{#!if 10^4==9999
r24
247출력 (^기호)}}}
248----
r41
249true ^ true : 출력되지 않는다.
r24
250{{{#!if true ^ true
251출력 (^ 기호)}}}
252----
r41
253true ^ false : 출력된다.
r24
254{{{#!if true ^ false
255출력 (^ 기호)}}}
256----
r41
257false ^ true : 출력된다.
r24
258{{{#!if false ^ true
259출력 (^ 기호)}}}
260----
r41
261false & false : 출력되지 않는다.
r24
262{{{#!if false ^ false
263출력 (^ 기호)}}}
264----
r63
265A^B==C {{{-2 ([math(A \neq 0,\ B \neq C)])}}}꼴을 if 조건문으로 걸어 놨는데 true가 된 것은, ==를 먼저 연산해서 A^false가 되었는데 A가 0이 아니므로 true로 읽히게 되어 A^false가 true로 반환되서 if 조건문이 true로 되어버린 모양.
r59
2661^2==3 : 1^false가 되어 출력된다.
267{{{#!if 1^2==3
268출력}}}
269----
2701^1==1 : 1^true가 되어 출력되지 않는다.
271{{{#!if 1^1==1
272출력}}}
273----
2740^1==2 : 0^false가 되어 출력되지 않는다.
r58
275{{{#!if 0^1==2
276출력}}}
r59
277----
2780^1==1 : 0^true가 되어 출력된다.
279{{{#!if 0^1==1
280출력}}}
281----
r82
282{{{#orange 결론}}}
283 : ^는 논리연산 XOR
r63
284
r60
285=== 비트 연산 ===
286| 기호, & 기호와 같이 2진법의 각 자릿수별로 계산된다.
287
288|| 10진법 || 2^^^4^^^ || 2^^^3^^^ || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
289|| 20 || 1 || 0 || 1 || 0 || 0 ||
290|| 11 || 0 || 1 || 0 || 1 || 1 ||
291|| (20^11)=31 || 1 || 1 || 1 || 1 || 1 ||
292(20^11)=31 : 출력된다.
293{{{#!if (20^11)==31
294출력 (20^11)=31}}}
295----
296(20^11)=30 : 2^^^0^^^의 자릿수가 틀려서 출력되지 않는다.
297{{{#!if (20^11)==30
298출력}}}
r66
299-----
300양변에 ^을 걸어도 출력된다.
301|| 10진법 || 2^^^4^^^ || 2^^^3^^^ || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
302|| 17 || 1 || 0 || 0 || 0 || 1 ||
303|| 14 || 0 || 1 || 1 || 1 || 0 ||
304|| (17^14)=31 || 1 || 1 || 1 || 1 || 1 ||
305(20^11)==(17^14) : 출력된다.
306{{{#!if (20^11)==(17^14)
307출력 }}}
308----
309(20^10)==(17^14) : 2^^^0^^^의 자릿수가 틀려서 출력되지 않는다.
310{{{#!if (20^10)==(17^14)
311출력 }}}
r83
312== ture, false, !기호 테스트 ==
r41
313false == false : 출력된다.
r27
314{{{#!if false==false
315출력 (f=f)}}}
316----
r83
317true == true : 출력된다.
318{{{#!if true==true
319출력 (t=t)}}}
320----
r41
321false == true : 출력되지 않는다.
r27
322{{{#!if false==true
323출력 (f=f)}}}
324----
r41
325false != true : 출력된다.
r27
326{{{#!if false != true
327출력 (!= 기호)}}}
328----
r41
3291!=0 : 출력된다.
r27
330{{{#!if 1!=0
331출력 (1!=0)}}}
332----
r41
3331 !=0 : 출력된다.
r28
334{{{#!if 1 !=0
335출력 (1 !=0)}}}
336----
r41
3371 !==0 : 출력되지 않는다.
r28
338{{{#!if 1 !==0
339출력 (1!==0)}}}
340----
r56
341!(1==0) : 출력된다.
342{{{#!if !(1==0)
343출력 !(1==0)}}}
344----
r41
3451<0 : 출력되지 않는다.
r28
346{{{#!if 1<0
347출력 (1<0)}}}
348----
r41
3491 !< 0 : 출력되지 않는다.
r28
350{{{#!if 1 !< 0
351출력 (1!< 0)}}}
352----
r41
3531 !(<) 0 : 출력되지 않는다. 부등호에 걸 수 있는 기호가 아니라서 깨진 모양이다.
r32
354{{{#!if 1 !(<) 0
355출력 (1!(<) 0)}}}
356----
r41
357!(1<0) : 출력된다.
r28
358{{{#!if !(1<0)
359출력 !(1<0)}}}
360----
r41
361!(true and true) : 출력되지 않는다.
r27
362{{{#!if !(true&true)
363출력 !(t&t)}}}
364----
r41
365!(true and false) : 출력된다.
r27
366{{{#!if !(true&false)
367출력 !(t&f)}}}
368----
r41
369!(false and false) : 출력된다.
r27
370{{{#!if !(false&false)
371출력 !(f&f)}}}
r41
372그냥 and 식 전체에 ! 씌우면 nand가 된다.
r28
373----
r29
374!(true ^ true)
375{{{#!if !(true^true)
376출력 !(t^t)}}}
377----
378!(true ^ false)
379{{{#!if !(true^false)
380출력 !(t^f)}}}
381----
382!(false ^ true)
383{{{#!if !(false^true)
384출력 !(f^t)}}}
385----
r28
386!(false ^ false)
387{{{#!if !(false^false)
388출력 !(f^f)}}}
r31
389그냥 ^ 식 전체에 ! 씌우면 xand(nxor)이다.
390----
r41
391!(!true) : 출력된다 (not of not)
r31
392{{{#!if !(!true)
393출력 !(!t)}}}
394----
r41
395!!true : 출력되지 않는다. !는 범위를 입력해줘야 동작되는 모양.
r31
396{{{#!if !!true)
397출력 (!!t)}}}
398----
r41
399not of not of not of true : 출력되지 않는다.
r31
400{{{#!if !(!(!true))
401출력 !(!(!t))}}}
402----
r41
403not of not of not of not of true ---사각형안의사각형안의--- : 출력된다.
r31
404{{{#!if !(!(!(!true)))
405출력 !(!(!(!t)))}}}
406----
r56
4070 : 진리값 0 (false)으로 읽히는지 출력되지 않는다.
408{{{#!if (0)
409출력}}}
410----
411!(0) : 출력된다.
412{{{#!if !(0)
413출력}}}
414----
4151 : 진리값 1 (true)으로 읽히는지 출력된다.
416{{{#!if (1)
417출력}}}
418----
419!(1) : 출력되지 않는다.
420{{{#!if !(1)
421출력}}}
422----
4232 : 출력된다.
424{{{#!if (2)
425출력}}}
426----
427!(2) : 출력되지 않는다.
428{{{#!if !(2)
429출력}}}
430----
4310.5 : 출력된다.
432{{{#!if (0.5)
433출력}}}
434----
435!(0.5) : 출력되지 않는다.
436{{{#!if !(0.5)
437출력}}}
438----
r82
439{{{#orange 결론}}} : !는 논리연산 NOT이고, 범위를 지정해줘야 동작된다.
r56
440---0만 아니면 될까?---
r36
441
r53
442== ~ 기호 테스트 ==
r41
443~false : 출력된다.
r36
444{{{#!if ~false
r38
445출력 ~f}}}
r37
446----
r41
447~(~true) : 출력된다.
r37
448{{{#!if ~(~true)
449출력 ~(~t)}}}
450----
r41
451~(!(~(!true))) : 출력된다.
r37
452{{{#!if ~(!(~(!true)))
453출력 ~(!(~(!t)))}}}
454----
r41
455~true : 출력된다.
r37
456{{{#!if ~true
457출력 ~t}}}
458----
r41
459~(true) : 출력된다.
r37
460{{{#!if ~(true)
461출력 ~(t)}}}
462----
r41
463(~true) : 출력된다.
r38
464{{{#!if (~true)
465출력 (~t)}}}
466----
r41
467~~true : 출력된다.
r37
468{{{#!if ~~true
469출력 ~~t}}}
470----
r41
471~(-1)=0 : 출력된다.
r38
472{{{#!if ~(-1)==0
473출력}}}
474----
r41
475~(-1)=1 : 출력되지 않는다.
r38
476{{{#!if ~(-1)==1
477출력}}}
478----
r41
479~(-2)=1 : 출력된다.
r39
480{{{#!if ~(-2)==1
481출력}}}
482----
r53
483~(~1)=1 : 출력된다.
484{{{#!if ~(~1)==1
485출력}}}
486----
r41
487~false=false : 출력되지 않는다.
r38
488{{{#!if ~false==false
489출력}}}
490----
r41
491~false=true : 출력되지 않는다.
r38
492{{{#!if ~false==true
493출력}}}
494----
r41
495~(!(true))=false : 출력되지 않는다.
r38
496{{{#!if ~(!true)==false
497출력}}}
498----
r84
499{{{#orange 결론}}} : ~ 기호는 논리 연산으로는 동작되지 않는다.
r40
500
501다만 위의 ~(-1)==1 을 가져와서 비트 연산이 참인지 거짓인지 나오는 결과를 두고 논리식을 만들기는 가능하다.
r41
502!(~(-1)==1) : false 부정이므로 출력된다.
r40
503{{{#!if !(~(-1)==1)
504출력}}}
r42
505----
506---만약에 if ~A|B을 해본다면?---
507
r48
508== % 기호 테스트 ==
509%는 윈도우즈 계산기 공학용에서 "%키"로도 쓰인다.
r52
510[math(5^2 \equiv 4\ (\bmod 7))] : ---그냥 왼쪽 식은 복잡한 식이고[* {{{#!wiki
511사실 [math(\equiv 11 \equiv 18 \equiv 25 \equiv 32 \equiv \cdots\ (\bmod 7))] 이지만 이 식에서는 오른쪽 수는 0 이상의 정수 가운데서 식을 만족하는 가장 작은 값을 생각한다.[br]물론 다음도 출력된다.
512if 18%7=32%7
513{{{#!if 18%7==32%7
514출력 (18%7=32%7)}}}
515
516여기서 %를 적어놓지 않으면 출력되지 않는다.
517예 : 5**2=11 로만 적어놓으면 출력되지 않는다.
518{{{#!if 5**2%7==11
519출력 (5**2%7=11)}}}}}}] --- 5^^^2^^^=25를 7로 나눈 나머지는 4이다.
r48
520{{{#!if 5**2%7==4
r52
521출력 (5^^^2^^^%7=4)
522----}}}
r48
523----
524식을 틀리게 적으면 출력되지 않는다.
525{{{#!if 5**2%7==3
526출력}}}
r50
527----
r63
528
r82
529== null 과 "" 테스트 ==
530""과 ""은 같다.
531{{{#!if "" == ""
532출력}}}
533----
534Null과 ""은 다르다.
535{{{#!if null == ""
536출력}}}
537----
r87
538좌 우를 바꿔 적어도 다르다.
539{{{#!if "" == null
540출력}}}
541----
r82
542null과 null은 같다.
543{{{#!if null==null
544출력}}}
545----
r86
546if null 은 출력되지 않는다.
547{{{#!if null
548출력}}}
549----
550그럼 앞에서 if false도 출력되지 않았으니까 null==false일까?
r82
551null=false 테스트 하면 출력되지 않는다.
552{{{#!if null==false
553출력}}}
r86
554
555null과 false는 같지 않다. (나무위키 도움말에서) if null이면 거짓이므로 출력이 안 되는 것이 아니라, if 조건부 null이 true 논리값으로 나오지 않아서 출력이 안 되는 것이다. ---틀린 말은 아닌데, 팩트가 하나도 없으면 참은 아니기 때문이다.---
r82
556----
557null과 true는 다르다. null=true 테스트를 하면 출력되지 않는다.
558{{{#!if null==true
559출력}}}
r87
560----
561그리고 if ""를 해도 출력되지 않는다.
562{{{#!if ""
563출력}}}
564----
r82
565{{{#orange 결론 1}}} : 호출할 때 {{{#!wiki style="display: inline; font-family: monospace;"
566{{{#skyblue 변수명}}}=}}}이라고 적으면 {{{#skyblue 변수명}}}은 "정의한 값이 없음(null)"이 아니라 "빈 텍스트 값"이 된다.
567{{{#orange 결론 2}}} : true, false는 "정의한 논리값"이므로 null과 다르다.
568
r84
569== 수 체계 확장 테스트 ==
r54
570제곱근
571[math(2\times\sqrt{3}=\sqrt{12})] : 출력된다.
572{{{#!if 2.0*(3.0**0.5)==12.0**0.5
573출력}}}
574----
r55
575다만, 아직까지는 [math(\sqrt{a}\times\sqrt{b}=\sqrt{ab})] 식이 정확히 동작되는지 더 살펴봐야 할듯.
576[math(\sqrt{13}\times\sqrt{10}=\sqrt{130})] : 출력된다.
577{{{#!if (13.0**0.5)*(10.0**0.5)==130.0**0.5
578출력}}}
579----
580[math(\sqrt{13}\times\sqrt{11}=\sqrt{143})] : 출력되지 않는다.
581{{{#!if (13.0**0.5)*(11.0**0.5)==(143.0**0.5)
582출력}}}
583----
r65
584%랑 엮이는 것인가?
585[math(\sqrt{13}\times\sqrt{11} {\color{blue}{\text{\%1000}}} =\sqrt{143} {\color{blue}{\text{\%1000}}})] : 출력된다.
586{{{#!if (13.0**0.5)*(11.0**0.5)%1000==(143.0**0.5)%1000
587출력}}}
588----
r55
589[math(\sqrt{12}\times\sqrt{11}=\sqrt{132})] : 출력된다.
590{{{#!if (12.0**0.5)*(11.0**0.5)==(132.0**0.5)
591출력}}}
592----
593[math(\sqrt{11}\times\sqrt{11}=\sqrt{121})] : 출력된다.
594{{{#!if (11.0**0.5)*(11.0**0.5)==(121.0**0.5)
595출력}}}
596----
r45
597지수의 지수
r63
598{{{+2 2^^^{{{#!wiki style="display: inline"
r44
5992^^^2^^^}}}^^^=16}}} : 출력된다.
600{{{#!if 2.0**(2.0**2.0)==0**1+16
601출력}}}
602----
r63
603{{{+1 2^^^{{{#!wiki style="display: inline"
r44
6042^^^2^^^}}}^^^=15}}}로 하면 출력되지 않는다.
605{{{#!if 2.0**(2.0**2.0)==0**1+15
606출력}}}
607----
r63
608{{{+2 3^^^{{{#!wiki style="display: inline"
r46
6093^^^2^^^}}}^^^=3^^^9^^^=19683}}} : 출력된다.
610{{{#!if 3.0**(3.0**2.0)==0**1+19683
r44
611출력}}}
612----
r63
613{{{+2 3^^^{{{#!wiki style="display: inline"
r46
6143^^^2^^^}}}^^^=3^^^9^^^=19682}}} : 출력되지 않는다.
615{{{#!if 3.0**(3.0**2.0)==0**1+19682
r44
616출력}}}
617----
r45
618지수의 지수의 지수
r63
619{{{+2 2^^^{{{#!wiki style="display: inline"
6202^^^{{{#!wiki style="display: inline"
r45
6212^^^2^^^}}}^^^}}}^^^=2^^^16^^^=65536}}} : 출력된다.
622{{{#!if 2.0**(2.0**(2.0**2.0))==0**1+65536
623출력}}}
624----
r63
625{{{+2 2^^^{{{#!wiki style="display: inline"
6262^^^{{{#!wiki style="display: inline"
r45
6272^^^2^^^}}}^^^}}}^^^=2^^^16^^^=65535}}} : 출력되지 않는다.
628{{{#!if 2.0**(2.0**(2.0**2.0))==0**1+65535
629출력}}}
630----
r63
631무한 지수 탑 함수 테스트를 해볼 겸 지수의 지수의 지수의 지수(...)를 테스트 해볼 수는 있겠지만 적당한 값을 넣어야 한다. 가령 {{{+2 2^^^{{{#!wiki style="display: inline"
6322^^^{{{#!wiki style="display: inline"
6332^^^{{{#!wiki style="display: inline"
r49
6342^^^2^^^}}}^^^}}}^^^}}}^^^}}}를 계산기에서 계산하면 {{{오버플로}}}가 나온다.
635----
r44
636[math(\left(1^{{1}\over{2}}\right)^{2}=1)]
637{{{#!if (1.0**0.5)**2.0==0**1+1
638출력}}}
639----
r45
640[math(\left((-1)^{{1}\over{2}}\right)^{2}=-1)] : [[허수]]는 불가능한 모양이다.
641{{{#!if ((-1.0)**0.5)**2.0==0.0**1.0-1.0
r44
642출력}}}
643
r84
644{{{#orange 결론}}} : (%로 잘만 달랜다면) 실수 범위의 계산까지 다룰 수 있다.
645
r91
646물론 [math(e^{i \pi}=-1)][* 오일러 등식] 같이 복잡한 계산을 생각해볼 수는 있겠지만, [math(\sin)], [math(\cos)] 등이 지원된다 하더라도 [[틀:계산기]][* 계산값 자체를 출력하는 방법이 아직까지는 발견되지 않은 상황에서, 두 수의 사칙연산을 계산하여 나오는 값을 자리 단위로 끊어 출력해주는 틀이다.]처럼 계산값을 출력하거나 판독해줘야 의미가 있으므로 그렇게까지 코딩 공사를 하자면 규모가 클 것으로 보인다.
r84
647
648== 비트 연산 테스트 ==
r67
649Zeroization. 자기 자릿수 이상으로 밀어버리면 0이 된다.
6501>>1=0 : 출력된다.
651{{{#!if 1>>1==0
652출력}}}
653----
r69
65442<2^^^6^^^=64이므로 2진법으로 6자리 숫자임을 이용.
r67
65542>>5==1 : 출력된다.
r68
656{{{#!if 42>>5==1
r67
657출력}}}
658----
65942>>5==0 : 42의 2^^^5^^^ 자릿수가 1이었으므로 출력되지 않는다.
r68
660{{{#!if 42>>5==0
r67
661출력}}}
662----
66342>>6==1 : 출력되지 않는다.
664{{{#!if 42>>6==1
665출력}}}
666----
66742>>6==0 : 출력된다.
668{{{#!if 42>>6==0
669출력}}}
670----
67142>>7==0 : 출력된다.
672{{{#!if 42>>7==0
673출력}}}
674----
r69
67542={{{#blue 101}}}010,,,(2),,,
67695={{{#blue 101}}}1111,,,(2),,,
67742>>3==5, 95>>4==5이므로 42>>3==95>>4는 출력된다.
678{{{#!if 42>>3==95>>4
679출력}}}
r78
680
r84
681== 역링크 등 기타 테스트 ==
682||If true [[틀:토론]] include[br]{{{#!if true
683[include(틀:토론)]}}}||
684||If false [[틀:폐쇄]] include[br]
685{{{#!if false
686[include(틀:폐쇄)]}}}||
687출력이 되지 않는 틀은 역링크를 조회해보면 include로 역링크가 걸리지 않는다.
688----
689||If true [[:분류:나무마크 문법|분류:나무마크 문법]][br]{{{#!if true
690[[분류:나무마크 문법]]}}}||
691||If false [[:분류:위키]][br]{{{#!if false
692[[분류:위키]]}}}||
693출력이 되지 않는 분류로는 해당 문서가 포함되지 않는다.
694----
695||If true \#\#\@[br]{{{#!if true
696##@if true
697}}}||
698||If false \#\#\@[br]{{{#!if false
699##@if false
700}}}||
701\#\#\@ 테스트. If 문구 사이에 \#\#\@를 끼워넣어도 편집창 상단 표시에 출력되어 나온다.
702
703||{{{#!wiki style="display:inline;"
704\#\#\@If true
705##@{{{#!if true
706##@if true
707##@}}}
708}}}||
709||{{{#!wiki style="display:inline;"
710\#\#\@If false
711##@{{{#!if false
712##@if false
713##@}}}
714}}}||
715단, \#\#\@ 로 표시되는 공간에 If 구문이 걸리면 true일 때만 출력된다.
716----
717{{{#!if false
718이 내용은 false라서 나오지 않습니다.
719예시 :
720토론 합의 내용
721 * 문서명(표제어)을 A로 정한다. (/threadslug1 토론 합의)
722 * 문서의 B 서술을 존치한다. (/threadslug2 토론 합의)
723 * 문서의 C 서술을 삭제한다. (/threadslug3 토론 합의)
724}}}
725
726{{{#orange 결론}}} : 출력되지 않는 점을 이용하면 [[\#\#주석]] 못지 않게 활용할 수 있을 듯하다.
727----
728
r26
729== 메모 ==
r72
730 * If 조건문에 함수를 넣을 수 있을까?
r77
731예 : dday를 넣어서 누구누구 운영자가 재직 며칠이 되었음을 적을 수 있음, pagecount를 넣어서 이 문서 개수가 몇 개를 돌파했음을 알릴 수 있음, 대문 기념일 틀을 기념일 되기 한참 전에 미리 만들어놓고 if를 걸어놓을 수 있음, 나무위키 공지 틀(고정 주석 문법)에 if를 걸어놓을 수 있음.{{{#!folding 예시 보기, 접기
r70
732{{{#orange 안내 :}}} 지원되지 않는 구문을 가상으로 적은 내용입니다.
r72
733{{{#ABCDEF \{\{\{#!if (\$\$\$dday(2025-xx-xx)\$\$\$>=-1){{{#orange &}}}(\$\$\$dday(2025-xx-xx)\$\$\$<=+1)
r74
734\[include(틀:대문/○○기념일)\][* 서버 시간과 시간대가 달라도 1일 전~1일 후 사이에는 기념일에 맞게 된다.]\}\}\}}}}{{{#00A495 \{\{\{#!if {{{#Red !(}}}(\$\$\$dday(2025-xx-xx)\$\$\$>=-1){{{#orange &}}}(\$\$\$dday(2025-xx-xx)\$\$\$<=+1){{{#Red )}}}
r73
735\}\}\}\[include(틀:대문)\][* 평상시 환영 문구. "○○위키에 오신 것을 환영합니다."]}}}}}}
r70
736-------
r74
737 * 틀의 매개변수명에 관하여
738{{{#!folding 펼치기, 접기
739{{{#orange 안내 :}}} 테스트 필요.
740 1. 매개변수에 입력하면 텍스트가 출력되거나 출력되지 않는 wiki style 구문 전부를 if 구문으로 변환한다. 가령
741 ||\#!wiki style="display:inline; display:{{{#tomato @@_@구버전 매개변수명@}}}=none"||
742 이 있으면
743 ||\#!if {{{#tomato @@_@구버전 매개변수명@}}}!=null||
744 으로 바꾼다.
745 1.#2 신버전과 나란히 입력한다.
746 예 : \{\{\{#!if ({{{#tomato 구버전 매개변수명}}}!=null)^({{{#green 신버전 매개변수명}}}!=null)
747 {{{#tomato @@_@구버전 매개변수명@}}}{{{#green @@_@신버전 매개변수명@}}}\}\}\}
748 1.#3 {{{#green 신버전 매개변수명}}}을 입력해도 틀이 동작된다.
749}}}
r72
750-------
751 * 발전 가능성
r62
752if 가 나왔으니 while, for 등 루프 연산, 그리고 더 나아가서 변수값 재지정, break, continue 등 구문이 나올 수 있어 보인다. 그렇게 나오게 되면 문서는 하나의 스크립트가 될 수 있다. 루프(loop) 연산이 나오게 되면 [[2021년 the seed 엔진 위키 서버 과부하 사건|include 과부하 요청]] 같이 무한히 지속되는 연산 요청을 내지 않도록 시스템에서 의도적으로 루프를 몇 번까지만 반복할 수 있도록 제한을 걸어둘 것으로 보인다.
r63
753
r1
754== 결론 ==
r64
755||{{{#!wiki style="margin: 0 0 0 -0.25em; display: inline; font-family:monospace;"
756\{\{\{#!if {{{#blue (논리식)}}}
r81
757{{{#green (논리식이 true이면 출력할 내용)}}}\}\}\}}}}||
r84
758||조건문에 지원되는 기능 : {{{#!wiki style="display: inline; font-family:monospace;"
759true, false, null, this}}} 등등||
r1
760|| 추정되는 문법 ||
r47
761If구문은 고장난 구문(문법)은 아니지만, ---잠수함 패치로 인해--- 변수를 연결할 수 있는 입력방법을 찾아야 한다. 조건부에 텍스트값, 정수 숫자값, 실수 숫자값, 논리값(true 또는 false)은 지원되는 입력으로 보인다. 연산할 값의 종류와 연산하여 나오는 값의 종류에 알맞은 기호만 쓴다면 원하는 설계에서 크게 벗어나지 않게 이용할 수 있다.