int a = 1;
int b = 2;
int c = 3;
int d = 4;
int e = 5;
if ((a = 10) == 10 && (b = 20) == 30 && (c = 30) == 30 || (d = 40) == 40 || (e = 50) == 50)
{
Console.WriteLine("TRUE");
}
Console.WriteLine($"{a} {b} {c} {d} {e}");
TRUE 출력
a = 10, b = 20, c = 3, d = 40, e = 5
연산자 우선순위 때문에 실제 연산은
((a = 10) == 10 && (b = 20) == 30 && (c = 30) == 30) || (d = 40) == 40 || (e = 50) == 50
이런식으로 묶인다.
()+x -x !x ~x ++x --x x++ x-- (int)* / %+ -<< >>< > <= >= is as== !=&^|&&||??? := += -= *= /= …&& 가 || 보다 먼저 private void First()
{
int a = 5, b = 10, c = 15;
if ((a = 2) == 3 || (b = 3) == 3 && (c = 7) == 7)
{
Debug.Log("IN");
}
Debug.Log($"{a}, {b}, {c}");
// IN
// 2 3 7
}
private void Second()
{
int a = 1, b = 2, c = 3, d = 4;
bool result = (a = 10) > 5 && (b = 20) < 5 || (c = 30) == 30 && (d = 40) == 50;
Debug.Log(result);
Debug.Log($"{a} {b} {c} {d}");
// false
// 10 20 30 40
}
private void Third()
{
int x = 0, y = 0, z = 0;
if ((x = 1) == 1 && (y = 2) == 1 || (z = 3) == 3 && (x = 4) == 4)
{
Debug.Log("IN");
}
Debug.Log($"{x} {y} {z}");
// IN
// 4 2 3
}
private void Fourth()
{
int a = 1, b = 1, c = 1;
bool r = (a = 5) == 5 && (b = 6) == 7 || (c = 8) == 8 && (a = 9) == 9;
Debug.Log(r);
Debug.Log($"{a} {b} {c}");
// true
// 9 6 8
}
private void Fifth()
{
int a = 1, b = 2, c = 3, d = 4;
bool r = (a = 10) != 10 && (b = 20) == 20 || (c = 30) > 10 && (d = 40) < 10 || (a = 50) == 50;
Debug.Log(r);
Debug.Log($"{a} {b} {c} {d}");
// true
// 50 2 30 40
}