그래서 나는 독서의 순서에 대해 다른 사업자,그리고 내가 읽 &&
높은 보다 중요성 ||
과 평가 빨리(소스). 그런 다음 누군가가 질문에 대해 무엇이 작품의 코드는 인쇄:
#include <stdio.h>
int main(){
int a=0, b=0, c=0, d=0;
if(a++>0 || ++b==1 || c--<=0 && d++>c--){
printf("if\na:%d\nb:%d\nc:%d\nd:%d\n",a,b,c,d);
}
else{
printf("else\na:%d\nb:%d\nc:%d\nd:%d\n",a,b,c,d);
}
return 0;
}
고 생각했는 c-- <= 0 && d++ > c--
평가 첫 번째는,진실입니다. 후 프로세스 c
것과 같 -2 고 d
것 1. 그것은 체크인 시작에서 왼쪽 평가 a++ > 0 || ++b == 1
진실하고, a
1 서 b
은 1 조건 및 그 후. 그래서 총 조건이 될 것이다 true || true
그리고 그것은 사실,그래서 우리는 인쇄:
if
a:1
b:1
c:-2
d:1
Yes? 분명히,no. 나는 그것을 테스트 GCC(Mingw)시스템에(Windows10)및 온라인 컴파일러(이 하나의)모두와 인쇄:
if
a:1
b:1
c:0
d:0
나는 변경을 조건으로 이: if(a++>0 || ++b==1 || (c--<=0 && d++>c--) )
그러나는 출력은 정확히 같은 것은 모두에서 장소입니다. 뭔가가는 내가 주목하지 않는? 또는 이것이 뭔가요? 그것은 거의 보이는 좋아하는 ||
고 &&
의 우선 순위가 같고 전체 평가 왼쪽에서,및 단락이 발생하고는 다른 것들입니다. 변경하는 경우 ++b==1
부로 ++b==0
다음과 같은 내가 예언합니다.
사전에 감사를 위해 어떠한 종류의 도움이됩니다:)