c언어 연산자 질문합니다.
글쓴이: vkvkvkvvv / 작성시간: 수, 2015/07/15 - 4:29오후
#include
int main(void)
{
int a,b,c;
printf("숫자입력");
scanf("%d", &a);
printf("숫자입력");
scanf("%d", &b);
system("cls");
c= (a>b)?b:a;
printf("input x:%d \n",a);
printf("input y:%d \n",b);
printf("smaller Number :%d \n",c);
a==b&&pirntf("같음");
}
위 상황에서 마지막 줄이 이해가 잘 안갑니다. a와 b가 같은 땐 pirntf가 실행되지만 다를 땐 실행이 되지 않는 현상이 나타납니다. &&연산자는 a==b의 결과와 printf의 문자열 길이를 반환한 결과를 &&로 비교해 줘야 하기 때문에 printf함수가 무조꾼 실행돼야 한다고 생각이 되는데 생각과 다른 결과가 출력되내요. 설명좀 부탁드리겠습니다.ㅠ
Forums:
&&(AND) 논리연산자는 앞부분의 논리가
&&(AND) 논리연산자는 앞부분의 논리가 False이면 뒤부분은 확인하지 않아도 False가 되기 때문에,
뒤에 있는 printf()는 수행이 않되는듯 하네요.
반면에 ||(OR) 논리연산자는 앞뒤 논리를 모두 검증해야하기 때문에
a==b || printf("같음"); 하면 printf는 무조건 실행될듯 합니다.
From:
*알지비 (메일: rgbi3307(at)nate.com)
*커널연구회(http://www.kernel.bz/) 내용물들을 만들고 있음.
*((공부해서 남을 주려면 남보다 더많이 연구해야함.))
expr1 && expr2 // expr1이 참이면
expr2의 side-effect만이 중요하다면, 다음과 같이 쓸 수 있습니다:
ᅟbash, lisp, scala 등 functional programming에서는 종종 보이는 표현이긴 하지만, C/C++ 등에서는 자주 보지는 못했네요. 궂이 저렇게 쓰지 말고 if를 쓰는게 더 편할 겁니다. (매크로 정의할 때는 예외)
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기