2013-07-29 3 views
1

은 그래서 저는 i=56*57 3192 나에게 제공하지만 내 프로그램이 값은 2162이다라고하는 i=i*++i으로 이것을 계산하려고 :연산자 우선 순위

class Demo { 
    public static void main(String args[]) { 
     short i=056; 
     i*=++i; 
     System.out.println(i); 
    } 
} 
+0

관심있는 내용 -'i = i * ++ i' 또는'i * = ++ i'? –

+0

'056'에서 앞에 오는'0'을 제거하면, 뭔가 빠진 답을 알게 될 것입니다. –

답변

8

문제는 곱셈 전에 - 그것은 여기 :

short i=056; 

그건 8 진수 리터럴이며 십진수 값은 46입니다. 실제로 46 * 47의 결과를 얻게됩니다. 실제로는 2162.

나는 을 강력하게라고 말하면 i *= ++i과 같은 코드를 사용하지 말 것을 권합니다. 모든 사람이 i *= i + 1을 사용하는 것이 더 간단합니다. 또한 8 진 리터럴을 사용하지 말 것을 권합니다.

+0

8 진 리터럴을 사용하지 말 것을 강력히 권고합니다! – Gabe

+0

@Gabe : 약 30 초 전 :) –