2016-11-01 7 views
3

세 개의 표현식이 있습니다. 각 표현식에는 논리 곱 또는 부정 부호가있는 곱셈이 포함됩니다. 이러한 논리와 그 부정은 지표 변수를 나타내므로 조건식으로 표현식을 평가합니다.연산자 우선 순위는 숫자와 부정 논리 곱을 포함하는 이러한 식의 차이점을 설명합니까?

-2*3*!T + 5*7*T 
5*7*T + -2*3*!T 
(-2*3*!T) + 5*7*T 

위와 같은 결과가 발생할 것으로 예상됩니다. 그러나 :

> -2*3*!T + 5*7*T 
[1] 0   # unexpected! 
> 5*7*T + -2*3*!T 
[1] 35 
> (-2*3*!T) + 5*7*T 
[1] 35 

난이 operator precedence 함께 할과 강제를 입력 할 수있는 뭔가가 확신하지만 그것도 *!T을 평가하는 것이 합리적 방법을 작동하지 않을 수 있습니다.

+0

'-2 * 3 * (! T) + 5 * 7 * T'와 같이'!'와도 관련이 있습니다. – thelatemail

+2

감사합니다. 가장 좋은 방법은 그러한 표현에서 대괄호로 네거티브를 묶는 것입니다. – Alex

+3

관련 항목 - http://stackoverflow.com/questions/17651687/behavior-of-summing-is-na-results 다음을 참고하십시오 :'codetools :: showTree (quote (-2 * 3 * (! T) + Lisp 코드에 익숙하다면 codetools :: showTree (quote (-2 * 3 *! T + 5 * 7 * T))'와 비교해 보겠습니다. – thelatemail

답변

4

이 연산자 우선 순위가 맞습니다. (위 링크) ?base::Syntax가 언급 된 바와 같이 상기 제 식 (

(-2*3)*!(T + 5*7*T) 

동등하므로 !는 산술 연산자 모두보다 낮은 우선 순위를 가지고 ! 함유 식 최종 승산 전에 평가되어야하기 때문에 수

-6*!(36) # T coerced to 1 in numeric operations 

또는

-6*FALSE # non-zero numbers coerced to TRUE in logical operations 

또는 01 일) 나 될
-6*0  # FALSE coerced to 0 in numeric operations 
+0

감사합니다. 나는 당신이 적어 놓은 첫 번째 표현을 찾기 위해 정말로 고심하고있었습니다. – Alex