#include<iostream>
using namespace std;
int main()
{
int i=2;
cout<<++i<<" "<<++i;
return 0;
}
왜 프로그램 출력이 '4 4'가 아닌 '3 4'입니까?사전 증가 연산자
#include<iostream>
using namespace std;
int main()
{
int i=2;
cout<<++i<<" "<<++i;
return 0;
}
왜 프로그램 출력이 '4 4'가 아닌 '3 4'입니까?사전 증가 연산자
줄이 출력되기 전에 둘 다 증가하기 때문에. 전체 라인이 실행될 때까지 화면에 대한 실제 쓰기가 지연되지만, 그때까지는 i에 대한 참조에 이미 값이 업데이트되었습니다.
두 개의 개별 출력으로 귀 서면 선을 분할하면 원하는대로 평가됩니다.
시퀀스 포인트가없는 동일한 변수 (두 개의 증분)에는 두 가지 부작용이 있습니다. 그래서 그들은 어떤 순서로 일어날 수도 있고 인터리빙 될 수도 있습니다 - 그 행동은 정의되지 않았습니다. 여기서 인터리브 된 비헤이비어를 얻는 것 같습니다. 표현식 ++i
이 증가하고 나서 i를 읽습니다. 따라서 증가, 증가, 읽기, 읽기가 진행됩니다.
출력 또한 사용중인 컴파일러에 따라 다릅니 까? –
TBH, 확실하지는 않지만, 송풍 장치가 스트림이며, 송수신 장치가 내장되어 전체적으로 플러시됩니다. 따라서이 동작은 피할 수없는 것입니다. –