i++와++i의 차이

1338 단어

앞에 쓰다


문제를 쓸 때++i를 i++로 썼던 것을 기억합니다. 아무리 디버깅을 해도 QAQ가 맞지 않습니다. 일이 끝난 후에도 잘 모르겠습니다.

1. 할당 순서


i++가 실행될 때 이렇게 실행됩니다: 먼저 값을 부여한 다음에 값을 추가합니다
코드로 표시
 
a = i++;  ------------> a = i; i = i + 1;

++i는 실행할 때 이렇게 실행됩니다: 먼저 값을 추가하고 값을 부여합니다
코드로 다음을 나타냅니다.
a = ++i --------------------> i = i + 1; a = i;

i++는 다른 일을 먼저 하고 자기가 하고++i는 자기가 하고 다른 일을 하는 것으로 형상적으로 이해된다
예를 들어 i=3, a=i++ 하면 a=3, 완성되면 i를 4로 만들고, a=++i는 i++를 4로 만들고, 그 다음에 a=4

2. 효율


i++;++i;C 언어 코드로 볼 때 i++와++i는 모두 한 줄밖에 없는데, 마치 양자의 실행 효율이 같은 것 같습니까?신지현: 나같은 꼬부랑이도 아닌거 알면서.
먼저 다음 코드를 살펴보겠습니다.
int i,a,b;
i = 0;
a = i++;
i = 0;
b = ++i;

상기 C 언어 코드에 대응하는 어셈블리 코드를 보면 j=i++를 볼 수 있다.컴퓨터는 k=++i를 실행하는 것보다 네 가지 명령을 설명해야 한다.지령이 하나 더 나왔다.더 많은 명령은 다음과 같다. i에 대한 추가 작업을 실행하기 전에 i의 현재 값을 저장하고 나중에 사용하십시오. (부여 값은 a)그래서++i의 효율은 i++보다 높다

3. 왼쪽과 오른쪽


아마도 많은 사람들이 왼쪽값이 무엇인지 모를 것이다. 말하자면 왼쪽값은 부치부호의 왼쪽에 놓을 수 있는 변수이고 오른쪽값은 왼쪽값이 아닌 모든 식의 값이다.
그러나 부여될 수 있는 값은 왼쪽과 오른쪽을 구분하는 근거가 아니다.예를 들어 C++의const 왼쪽 값은 부여할 수 없습니다.오른쪽 값은 값을 부여할 수 있습니다.왼쪽 값과 오른쪽 값의 근본적인 차이는 주소 & 연산자가 대응하는 메모리 주소를 얻을 수 있는지 여부입니다.
i++는 왼쪽 값이 될 수 없고,++i는 가능합니다!!!
예를 들어 다음 코드는 다음과 같습니다.
i++ = a; //    
++i = a  //  

좋은 웹페이지 즐겨찾기