์ผํธ-์ํท (Short-Circuit)
์ผํธ์ํท์ด๋ ๋ ผ๋ฆฌ ์ฐ์ฐ์์ ๋ ํผ์ฐ์ฐ์ ์ค ์ด๋ ํ์ชฝ๋ง '์ฐธ'์ด๋ฉด์ ์ฐ์ธก ํผ์ฐ์ฐ์์ ๊ฐ์ ํ๊ฐํ์ง ์๊ณ ๋ฐ๋ก ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ํ์๋ฅผ ๋งํฉ๋๋ค. ๊ทธ๋์ ๊ฐ์ ์กฐ๊ฑด์์ด๋ผ๋ ํผ์ฐ์ฐ์์ ์์น์ ๋ฐ๋ผ์ ์ฐ์ฐ์๋๊ฐ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์๋์ ๊ฐ์ ์ฝ๋๊ฐ ์์ต๋๋ค. ๊ณผ์ฐ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ ์ด๋ป๊ฒ ๋์ฌ๊น์?
// JAVA
public class Test {
public static void main(String[] args) {
int a = 0, b = 0;
if (a == 0 || ++b == 1) {
}
System.out.print(a + " " + b);
}
}
์ ์ฝ๋์ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ 0 0 ์ด ๋์ต๋๋ค.
์คํ ๊ฒฐ๊ณผ์์ ์ ์ ์๋ฏ์ด, ๋ ๋ฒ์ ๋ ผ๋ฆฌ ์ฐ์ฐ ํ์๋ b์ ๊ฐ์ ์ฌ์ ํ 0์ธ ์ฑ๋ก ๋จ์์์ต๋๋ค. '||(OR)'์ ๊ฒฝ์ฐ๋ ์ข์ธก ํผ์ฐ์ฐ์ (a==0)๊ฐ ์ฐธ์ด๋ผ์ ์ฐ์ธก ์ฐ์ฐ์๋ฅผ ํ๊ฐํ์ง ์๊ณ ๋ฐ๋ก ๋์ด๊ฐ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ๋ผ์ ๊ฒฐ๋ก ์ ์ผ๋ก ๊ฐ์ ์กฐ๊ฑด์์ด๋ผ๋ ํผ์ฐ์ฐ์์ ์์น์ ๋ฐ๋ผ์ ์ฐ์ฐ์๋๊ฐ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
์ฆ ์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ '์ฐธ'์ผ ํ๋ฅ ์ด ๋์ ํผ์ฐ์ฐ์๋ฅผ ์ฐ์ฐ์์ ์์ชฝ์ ๋์์ผ ๋ ๋น ๋ฅธ ์ฐ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด JAVA๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ์ธ์ด๋ค๋ Short-Circuit์ ์ง์ํ ๊น์?
์ํคํผ๋์์ Support in common programming and scripting languages ๋ถ๋ถ ๋ชฉ์ฐจ๋ฅผ ์ดํด๋ณด๋ฉด Short-Circuit์ ์ง์ํ๋ ์ธ์ด ๋ชฉ๋ก์ ํ์ธํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ์ธ์ด์ธ C, C++, JAVA, Kotlin, Python, JS๊ณผ ๊ฐ์ ์ธ์ด๋ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก Short-Circuit์ ์ง์ํจ์ ์ ์ ์์ต๋๋ค.
ํ๊ณ
int main(){
int a = 0, b = 0;
if(a==0 || ++b == 1);
cout<<a<<' '<<b;
}
์ ์ฝ๋๊ฐ ๋น์ฐํ 0 1๋ก ์ถ๋ ฅ์ด ๋ ์ค ์์๋๋ฐ ์๋๊ธธ๋ ์ฐพ์๋ณด๋ค๊ฐ ์ผํธ์ํท์ ๋ํด ์๊ฒ ๋์ด ์ ๋ฆฌํ๊ฒ ๋์์ต๋๋ค.
'BackEnd๐ฑ > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ์ธํฐํ์ด์ค(interface) ์ด ์ ๋ฆฌ (0) | 2022.03.30 |
---|---|
[Java] super์ super()์ ๊ฐ๋ (0) | 2022.03.24 |
[Java] static ๊ณผ instance์ ์ฐจ์ด (0) | 2022.03.21 |
[Java] JVM์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์ฑ์์์ ์์ญ์ ๊ดํ ๊ณ ์ฐฐ (0) | 2022.03.18 |
[Java] ์ด๋ฆ ๋ถ์ ๋ฐ๋ณต๋ฌธ(Labeled-Loop) (0) | 2022.03.13 |
[Java] JIT ์ปดํ์ผ๋ฌ(Just-In-Time) (0) | 2022.03.08 |
๋๊ธ