var 하고 func() 가 반드시 들어가야하는건 자명하니 9바이트는 이미 먹힙니다. (main을 호출하는건 뒤에서 그때그때 고려하겠습니다. 어차피 함수명 길이는 똑같으니까...)
남은건 2바이트.
if문 안에 들어갔을 때, func이 호출되기 전에 var의 값이 변하지 않으면 무한루프에 걸리기 때문에 var 값은 func가 호출되기 전에 변해야합니다. 이는 호출할 함수가 main인 경우에도 똑같습니다. (main은 또다시 func를 호출하므로...) func과 main의 리턴값이 다르기 때문에 어떤 것을 선택하느냐에 따라서 결과가 달라질 수도 있지만 일단 func 안의 if문은 반드시 한 번은 들어가기 때문에 var값을 미리 변화시켜야한다는 사실에는 변함이 없습니다.
var 값이 변하려면 반드시 대입연산자,(=) 복합대입연산자(+=, -=, ...), 증감연산자(++, --)가 필요합니다.
1. += 같은 복합대입연산자를 쓸 때, 남는 2바이트를 모두 써버립니다. 문법을 지키려면 최소한 답의 마지막에는 연산자가 등장해야 합니다. 하지만 그런 경우를 모두 따져도 다 문법에러. (예) func(var)+=
2. ++ 같은 증감연산자를 쓸 때, 답의 마지막 부분에 뭐가 등장해도 문법에러가 납니다. (예) func(var)++
경우 a. ?의 우선순위가 =보다 높은 경우 : func() 먼저 호출해서 무한루프 ~~ 낮은 경우 : func() 에 대입? 비적법 ~~ 같은 경우 : 같은 경우는 ?가 =인 경우입니다. 위와 같은 이유로 탈락.
경우 b. ?의 우선순위가 =보다 높은 경우 : 대입연산자의 좌변은 반드시 l-value 이어야 합니다. l-value를 리턴하면서 operand가 2개인 연산자는 "없습니다." ~~ 낮은 경우 : ?는 콤마 연산자입니다. 호오? 뭔가 되는거같은게 등장했네요. 아쉽지만 런타임 에러납니다. ~~ 같은 경우 : func() 에 대입? 비적법
경우 c. ?의 우선순위가 =보다 높은 경우 : func 먼저 호출해서 무한루프 ~~ 낮은 경우 : func 먼저 호출해서 무한루프 ~~ 같은 경우 : func() 에 대입? 비적법
경우 d. ?는 단항연산자네요. func가 대입당하려면 ?가 l-value 를 뱉는 연산자여야하는데 하나 있습니다. * 연산자.... 탈락.