Untitled

<aside> 💡 목차


</aside>

https://github.com/POCU/COMP1500CodeSamples

용어 & 자료형 크기 & 표현 범위 요약

평가(evaluate) ?

<aside> 💡 C#에서 평가(evaluate)는 식의 결과를 계산하는 것을 의미합니다.


int x = 1 + 2;

</aside>

>> 식이 성립했을 경우, 평가의 생략

즉, 이미 참이라면 다음 결과를 내는것을 생략한다는 의미.

OR 이든 AND 든, 식의 결과가 거짓이 되는 조건이 된다면, 연산은 종료 (AND는 좌항이 거짓이면 바로 거짓이므로 우항을 생략한다)

→ OR 의 경우

<aside> 💡 좌항에서 이미 참이 나온 경우


이미 첫 번째 표현식이 참이므로 두번째는 평가할 필요 없음

이미 첫 번째 표현식이 참이므로 두번째는 평가할 필요 없음

</aside>

<aside> 💡 좌항에서 거짓이 나온 경우


좌항이 거짓이므로 우항 표현식까지 평가해야함

좌항이 거짓이므로 우항 표현식까지 평가해야함

</aside>

→ AND의 경우

<aside> 💡 좌항에서 거짓이 나온 경우


좌항이 거짓이므로 이미 거짓이니 우항을 생략함

좌항이 거짓이므로 이미 거짓이니 우항을 생략함

</aside>

→ 평가의 생략 예시 문제1 🔥🔥🔥

아래 내용 요약

아래 내용 요약

int num1 = 10;
int num2 = 20;
if (num1 == 10 || ++num2 == 20)
{
    num1++;
}
 
Console.WriteLine($"{num1}, {num2}");

→ 평가의 생략 예시 문제2 🔥🔥🔥

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
    }
}

→ 평가의 생략 예시 문제3 🔥🔥🔥

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
        }
    }
}