확실하지는 않지만.. 아마 첫번 째 별표의 경우 (++x) 를 실행하면 1이 나오기 때문에 || 의 성격상 아마 뒤의 식(y=x) 는 무시해버려서 y의 기본 값인 0 이 찍히는 것 같구요.
두번째, 세번째의 경우
제가 알기로는 volatile의 경우 변수 자체의 쓰임새가 컴파일러가 판단했을 때, 필요 없다고 생각했을 때, 변수 자체를 무시하는데 이걸 무시 하지 말라고 할 때 사용하는걸로 알고 있는데
2번 째, 3번째의 경우 이거랑은 별 관련이 없는 것 같고 && 기호 뒤에 것을 스킵하는 것은 && 기호를 처리 하는 특성상 그런 것 같습니다.
today
[04/17 00:46]
::
카메란님이 말씀하신대로입니다. C언어에서 ||나 &&와 같은 논리 연산을 사용할경우 ||의 경우 앞의 식이 참일 경우 뒤의 식은 볼필요도 없이 참이 되기때문에 실행하지 않구요, &&의 경우에는 앞의 식이 거짓일 경우 뒤의식은 연산해봐야 식이 거짓이 되므로 연산을 더이상 수행하지 않습니다.
Real_G
[04/17 01:00]
::
그런 거였군요 ||를 하면서는 전혀 생각을 못하다가 &&을 해보면서 그럴꺼 같다고 생각되서 volatile를 썼는데 volatile도 소용없는거였군요