java 자가와 자감 연산 과정
public class Add {
public static void main(String[] args) {
int i = 0;
i=i++ + ++i;
int j = 0;
j= ++j + j++ + j++ + j++;
int k = 0;
k=k++ + k++ + k++ + ++k;
int h = 0;
h=++h + ++h;
int p1=0,p2=0;
int q1=0,q2=0;
q1=+p1;
q2=p2++;
System.out.println("i "+i);
System.out.println("j "+j);
System.out.println("k "+k);
System.out.println("h "+h);
System.out.println("p1 "+p1);
System.out.println("p2 "+p2);
System.out.println("q1 "+q1);
System.out.println("q2 "+q2);
}
}
출력i 2
j 7
k 7
h 3
p1 0
p2 1
q1 1
q2 0
해석: i++와++i가 사용하는 차이점은 프로그램이 끝난 후의 자증이고, 하나는 프로그램이 시작되기 전의 자증이다.
'i=i++++i'가 실행되는 과정은 i++를 먼저 실행하지만 i가 1을 추가하는 작업은 잠시 후에야 실행되기 때문에 이때 i는 0이고 그 다음에 +i, +i를 실행한 후 i의 값은 1이다. +i를 실행한 후에 i++를 추가해야 하기 때문에 이때 i의 값은 실제적으로 2,0+2=2이고 그 다음에 i에게 값을 부여한다. 최종 i의 값은 2이다.
'j=++j+j+++j+++j++', 집행하는 과정은 선++j이기 때문에 j의 값은 1이고, 그 다음에 j++, j++를 집행한 후 j의 값은 1이고, 그 다음에 j++를 집행한 결과는 1이지만, 아까의 j++를 보충해야 한다. 그래서 이때 j의 실제 값은 2이고, 그 다음에 마지막 j++를 집행한 결과는 여전히 2이지만 아까의 j++를 보충해야 한다. 그래서 이때 j의 값은 실제적으로 3이기 때문에 1+1+2+7을 부여한다.j의 최종치는 7.
"k=k++k+++k+++++++k"가 실행되는 과정은 먼저 k++이기 때문에 k의 값은 0이고 그 다음에 k++를 실행한다. k+++를 실행한 후 k의 값은 여전히 0이지만 아까의 k++를 추가해야 한다. 그래서 이때 k의 값은 사실상 1이고 그 다음에 마지막 k++를 실행한다. 실행 후의 결과는 여전히 1이지만 아까의 k++를 추가해야 한다. 그래서 이때 K의 값은 실제 2, 마지막 실행은++k, 실행 결과는 3이고 아까의 k++를 추가한다. k의 실제 결과는 4,그래서 0+1+2+4=7, 그리고 k에게 값을 부여하면 최종 k의 값은 7이다.
'h=++h+++h'는 먼저 h를 증가시키고 h값은 1을 증가시킨 다음에 h값은 2를 증가시킨다. 그래서 1+2=3을 증가시킨 다음에 h를 부여한다. 최종 h의 값은 3이다.
"q1=++p1"먼저 p1을 증가시키고 p1의 값은 1이고 다시 q1에 값을 부여하기 때문에 q1의 값은 1입니다.
'q2=p2++'는 p2를 q2에게 부여하고 q2의 값은 0이고 그 다음에 p2를 증가시키기 때문에 p2의 값은 1이다.
위에서 말한 것은 편집자가 여러분께 소개한 자바 자가와 자감 연산 과정입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 점이 있으면 저에게 메시지를 남겨 주시면 편집자는 제때에 답장을 드리겠습니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.