C언어 & 파이썬/C언어 2012. 4. 20. 14:44

관계, 논리, 조건 연산자.

내가 후디니스트에 질문올린 식.

if($F<32 && $F % 9 == 1 , $F, -1)

풀이.

&& = X&&Y X 와 Y가 참이면 참, 그렇지 않으면 거짓.

 조금 복잡하게 생각하시는 것 같아서^^!
if (float expression, float true_value, float false_value)
이 if 함수는 단순 if 조건문이 아니라 if ~else 라고 보셔야 합니다.
조건이 참이면 float true_value를 출력하고
조건이 거짓이면 float false_value를 출력하라는 의미입니다.
결국 참과 거짓 조건에 모두 실행문이 걸려 있는것입니다.

위의 함수를 간단하게 글로 표현하면 

"32프레임보다 적은 프레임들 중에서 9로 나눈 나머지가 1이
되는 프레임의 값(1,10,19,28)을 출력하고 그 외의 모든 프레임들은 -1값을 출력하시오."

간단하게 box로 transform을 해보시면 이해가 가실 겁니다.

<댓글 레이님>

모두 거짓임으로 거짓.
참이면 $F, 거짓이면 -1
거짓임으로 -1이 답이된다. 허나 C언어에서는 거짓값은 오직 0으로 표현됨으로 이외의 모든 음수가 푸함된 모든수는 참(1)으로 연산된다.
그러므로 1로 연산되어진다.

1. 관계 연산자

    관계 연산자는 두 개의 피연산자를 비교하는데 쓰는 연산자이다.



2. 논리 연산자

    논리 연산자는 여러 개의 조건을 조합하여 참인지 거짓인지 따질 때 사용한다.



논리 연산 표(왼쪽은 수학적, 오른쪽은 C)



    1. NOT 연산자(!)

       NOT 연산자는 상수나 변수들의 수식에 적용될 수 있으며 수식의 값이 참이면 거짓으로 만들고 거짓이면 참으로 만든다.


    2. AND(&&)와 OR(||) 연산자

        AND와 OR 연산자는 논리적인 AND와 OR를 구현한 이항 연산자이다. AND는 두 개의 피연산자가 모두 참일 때만 연산 결과가 참이 되고, OR연산자는

        하나의 연산자만 참이면 연산 결과가 참이 된다.


    3. 논리 연산자의 우선 순위

        NOT(!)연산자의 우선 순위는 증감(++, --)와 동일

        AND(&&)와 OR(||) 연산자가 우선 순위는 모든 산술 연산자나 관계 연산자보다 낮다.

        AND와 OR 연산자는 우선 순위가 높다.


    4. 단축 계산

        AND 연산자의 경우, 첫 번째 피연산자가 거짓이면 다른 피연산자들을 계산하지 않으며, OR 연산자의 경우, 첫번째 피연산자가 참이면 다른

        피연산자들을 계산하지 않는다. 이를 주위해야 한다.


   3. 조건 연산자(? :)

      조건 연산자는 C에서 유일하게 삼항 연산자이다. 형태는 'exp1?exp2:exp3'이며 exp1값이 참이면 exp2이 거짓이면 exp3가 계산된다.

 

출저 네이버 블로그 http://blog.naver.com/dufvndrnjs?Redirect=Log&logNo=70134344992