if(a)와 if(!a)의 차이점
, 이 창훈님이 작성if(a) 는 a가 참이면 작동하므로
if(a!=0)과 동일하다고 합니다.
if(!a) 는 a가 거짓이면 작동하므로
if(a==0)과 동일하다고 합니다.
그런데 아래 문제에서 혼동되는게 있습니다.
-----------------------------------
int j = 0, i= 0;
while(i++ && i <100){
if(!(i%10)) j++;
}
printf("%d", j);
-----------------------------------
위 프로그램을 실행하였을 때 출력결과는 0이라고 합니다.
실제로 while문이 전혀 실행되지 않기 때문입니다.
그런데 만약 맨 위에 적은 논리대로라면
if(!(i%10)) j++; 구문은
if(i%10==0) j++;과 같을 것입니다.
그런데, i의 첫값이 0이므로
0%10==0
0 == 0 이므로 결국 0은 0이니까 참이 되는 거 아닌가요?
참이된다면 j++;에 의해 j가 계속 늘어나면서 while문이 반복되야하는 거 아닌가 하는 궁금증이 생겼습니다.