2012-11-09 2 views

답변

0

줄이 출력되기 전에 둘 다 증가하기 때문에. 전체 라인이 실행될 때까지 화면에 대한 실제 쓰기가 지연되지만, 그때까지는 i에 대한 참조에 이미 값이 업데이트되었습니다.

두 개의 개별 출력으로 귀 서면 선을 분할하면 원하는대로 평가됩니다.

+0

출력 또한 사용중인 컴파일러에 따라 다릅니 까? –

+0

TBH, 확실하지는 않지만, 송풍 장치가 스트림이며, 송수신 장치가 내장되어 전체적으로 플러시됩니다. 따라서이 동작은 피할 수없는 것입니다. –

0

시퀀스 포인트가없는 동일한 변수 (두 개의 증분)에는 두 가지 부작용이 있습니다. 그래서 그들은 어떤 순서로 일어날 수도 있고 인터리빙 될 수도 있습니다 - 그 행동은 정의되지 않았습니다. 여기서 인터리브 된 비헤이비어를 얻는 것 같습니다. 표현식 ++i이 증가하고 나서 i를 읽습니다. 따라서 증가, 증가, 읽기, 읽기가 진행됩니다.