
<aside> 💡 목차
</aside>
https://github.com/POCU/COMP1500CodeSamples
<aside> 💡 C#에서 평가(evaluate)는 식의 결과를 계산하는 것을 의미합니다.
int x = 1 + 2;
</aside>
즉, 이미 참이라면 다음 결과를 내는것을 생략한다는 의미.
OR 이든 AND 든, 식의 결과가 거짓이 되는 조건이 된다면, 연산은 종료 (AND는 좌항이 거짓이면 바로 거짓이므로 우항을 생략한다)
OR 의 경우<aside> 💡 좌항에서 이미 참이 나온 경우

이미 첫 번째 표현식이 참이므로 두번째는 평가할 필요 없음
</aside>
<aside> 💡 좌항에서 거짓이 나온 경우

좌항이 거짓이므로 우항 표현식까지 평가해야함
</aside>
<aside> 💡 좌항에서 거짓이 나온 경우

좌항이 거짓이므로 이미 거짓이니 우항을 생략함
</aside>

아래 내용 요약
int num1 = 10;
int num2 = 20;
if (num1 == 10 || ++num2 == 20)
{
num1++;
}
Console.WriteLine($"{num1}, {num2}");
using System;
public class Program
{
public static void Main()
{
int num = 10;
//평가의 생략 법칙
//좌항은 거짓이니 우항이 정상 연산됨
if (3 * 6 != 18 || ++num == 11)
{
num++; //11++ -> 12
}
//평가의 생략 법칙
//좌항은 참이고, 우항은 정상연산됨
//하지만 우항은 거짓이라, if문 내부의 num은 작동하지 않음
if (12 + 2 == 14 && num++ == 11) //12-> 13
{
num++;
}
//평가의 생략 법칙
//좌항은 참이니 OR에 의해 전체가 참이니 우항은 생략됨
if (1 * 4 == 4 || num++ > 0)
{
num++; //13 -> 14
}
Console.WriteLine(num); //14
}
}
using System;
namespace LogicalExpressions
{
class Program
{
static void Main(string[] args)
{
int num1 = 1;
int num2 = 1;
int num3 = 4;
bool bExpression1 = !(num1 == num2 && num1 != num3); // (1*1)' = 0
bool bExpression2 = num1 != num2 || num1 == num3; // 0 + 0 = 0
Console.WriteLine($"expression1: {bExpression1}"); //-> 0 False
Console.WriteLine($"expression2: {bExpression2}"); //-> 0 False
//0 + 0 + 1
bool bExpression3 = num1 > num2 || num1 == num3 || ++num1 > num2; //num1 = 2
Console.WriteLine($"expression3: {bExpression3}"); //-> 1 True
// 1 + ...평가의 생략
bool bExpression4 = num3 >= num2 || num1-- == num2;
Console.WriteLine($"expression4: {bExpression4}"); //-> 1 True
// 0 * ...평가의 생략
bool bExpression5 = num3 == num1 && --num2 > num1;
Console.WriteLine($"expression5: {bExpression5}"); //-> 0 False
}
}
}