내 코드 :이 신비한 코드는 무엇을합니까?
public void mysterious() {
int x = 1;
x = x++/++x;
System.out.println(x);
}
무슨 대답?
내 코드 :이 신비한 코드는 무엇을합니까?
public void mysterious() {
int x = 1;
x = x++/++x;
System.out.println(x);
}
무슨 대답?
이 표현식의 평가는 왼쪽에서 오른쪽으로 수행됩니다. 이 표현식은 증분 평가 후이 표현식과 같습니다.
x = 1/3;
따라서 대답은 0입니다.
int x = 1;
x = x++/++x;
System.out.println(x);
평가가 이루어집니다 왼쪽에서 오른쪽으로 : -
1
그런 다음 X 1 씩 증가됩니다++x
다음은 3 일 것입니다. (x는 x++
이후에 증가했습니다)그래서, 기본적으로, 당신의 위의 코드는 동일합니다 : - 위의 문을 중단하자 변수 x
x = x++/++x;
의 정수 값 1
int x = 1;
int a = x++; // a = 1, x = 2
int b = ++x; // b = 3, x = 3
x = a/b; // x = 1/3
System.out.println(x); // Prints 0
public void mysterious() {
int x = 1;
x = x++/++x;
System.out.println(x);
}
x = 1;
// 할당 2 diff 문으로.
x++
- 값 그때, 이제 2 정도로 후행는 X의 값은 1 씩 증가
x++
- 선행 증가, X의 값은 다시 한번 3 있도록 증가하고 좌측 (X)에 할당 지금.
System.out.println(x);
그래서 대신 INT의 double
를 사용하는 경우, 당신은 값이 그래서 '돈 예상대로 난 항상'0 '얻을 0.33333333
것을 볼 것이다,
0
으로 이어질 것입니다1/3
이 될 것입니다 왜 당신이'2'를 얻는지를 안다. –나는 0을 말할 뻔했다. 1/3은 0.33으로 int (이 경우)로 캐스트하면 0이된다. –
'1/3'은 정수 나누기가 0이고 캐스팅이 필요 없다. ;) –