[php] ‘AND’대 ‘&&’연산자

나는 개발자가 사용하기로 결정 코드베이스가 ANDOR대신 &&||.

나는 연산자의 우선 순위에 차이가 있다는 것을 알고 있지만 ( &&앞에 가야 함 and) 주어진 프레임 워크 ( PrestaShop 이 정확함)를 사용하면 분명히 이유가 아닙니다.

어떤 버전을 사용하고 있습니까? and보다 읽기 쉬운 가요 &&? 아니면 차이가 없습니까?



답변

ANDand 를 사용 OR하면 결국 다음과 같은 문제가 발생합니다.

$this_one = true;
$that = false;

$truthiness = $this_one and $that;

무엇이 $truthiness일치 하는지 추측하고 싶 습니까?

당신이 말했다면 false

$truthiness위의 값이 true있습니다. 왜? =더 높은 우선 순위 이상을 and. 묵시적 순서를 보여주기 위해 괄호를 추가하면 다음이 더 명확 해집니다.

($truthiness = $this_one) and $that

첫 번째 코드 예제 &&대신 대신 사용하면 and예상대로 작동하고입니다 false.

아래 주석에서 논의했듯이 괄호가 다음보다 우선 순위가 높기 때문에 올바른 값을 얻습니다 =.

$truthiness = ($this_one and $that)


답변

사용 방법에 따라 필요할 수도 있고 편리 할 수도 있습니다.
http://php.net/manual/en/language.operators.logical.php

// "||" has a greater precedence than "or"

// The result of the expression (false || true) is assigned to $e
// Acts like: ($e = (false || true))
$e = false || true;

// The constant false is assigned to $f and then true is ignored
// Acts like: (($f = false) or true)
$f = false or true;

그러나 대부분의 경우 @Sarfraz와 같은 CodeIgniter 프레임 워크에서 본 모든 발생과 같은 개발자의 취향이 더 많은 것처럼 보입니다.


답변

안전을 위해, 나는 항상 비교를 괄호로 묶고 비워 둡니다. 그렇게하면 연산자 우선 순위에 의존 할 필요가 없습니다.

if(
    ((i==0) && (b==2))
    ||
    ((c==3) && !(f==5))
  )


답변

우선 순위는 &&and (&&가 and 보다 우선 순위가 높음)에 차이가 있으며, 삼항 연산자와 결합하면 혼동이 발생합니다. 예를 들어

$predA && $predB ? "foo" : "bar"

반면 문자열 을 반환합니다

$predA and $predB ? "foo" : "bar"

부울 을 반환합니다 .


답변

조건 할당에 사용할 수있는 and것보다 우선 순위가 낮 으므로=

if ($var = true && false) // Compare true with false and assign to $var
if ($var = true and false) // Assign true to $var and compare $var to false


답변

“and”- “&&”- “&”의 차이점을 설명하겠습니다.

“&&”및 “and”는 모두 논리 AND 연산 이며 동일한 작업 을 수행하지만 연산자 우선 순위는 다릅니다.

연산자의 우선 순위 (우선 순위)는 두 표현식을 “단단하게”묶는 방법을 지정합니다. 예를 들어, 식 1 + 5 * 3에서 곱셈 ( “*”) 연산자는 더하기 ( “+”) 연산자보다 우선 순위가 높기 때문에 답은 18이 아니라 16입니다.

단일 작업으로 함께 혼합하면
항상 && 사용을 권장 하는 경우에 예기치 않은 결과가 발생할 수 있지만, 이것이 귀하의 선택입니다.


반면 “&”는 비트 단위 AND 연산 입니다. 정수 값 내에서 특정 비트의 평가 및 조작에 사용됩니다.

예를 들어 (14 & 7) 결과는 6입니다.

7   = 0111
14  = 1110
------------
    = 0110 == 6


답변

어떤 버전을 사용하고 있습니까?

특정 코드베이스에 대한 코딩 표준이 코드를 작성하는 데 사용할 연산자를 지정하는 경우 반드시 사용해야합니다. 그렇지 않은 경우 코드에서 사용해야 할 항목을 지정 하고 (종종 쉽게 해결할 수없는 경우) 사용하겠습니다. 그렇지 않으면 아마도 && .

‘&&’보다 ‘and’가 더 읽기 쉬운가요?

그것은 더 읽기가 당신에게 . 답은 예, 아니오입니다 . 연산자 주변의 코드와 실제로 읽는 사람을 포함한 많은 요소에 따라 다릅니다!

|| ~ 차이가 있습니까?

예. 참조 논리 연산자 에 대한 ||비트 연산자 를 들어 ~.