연산자로서의 'AND' vs '&'
가 사용하기로 .AND
★★★★★★★★★★★★★★★★★」OR
&&
★★★★★★★★★★★★★★★★★」||
.
우선순위에 가 있는 을 알고 &&
에 and
하지만, 주어진 프레임워크(정확히 말하면 Presta Shop)에서는, 그것은 분명히 이유가 되지 않습니다.
떤떤버 ?전 ?? ???? 이는?and
&&
니면차 차이 ?? ???
「 」를 사용하고 AND
★★★★★★★★★★★★★★★★★」OR
결국 다음과 같은 상황에 놓이게 됩니다.
$this_one = true;
$that = false;
$truthiness = $this_one and $that;
요?$truthiness
같습니까?
라고 하면false
틀렸어! bzzt, 안 ..., 어어!
$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;
그러나 대부분의 경우 개발자의 취향에 가까운 것 같습니다. 제가 CodeIgniter 프레임워크에서 본 것처럼요.@Sarfraz처럼요.
★★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
안전을 위해서, 나는 항상 내 비교를 괄호 안에 넣고 띄운다.이렇게 하면 연산자 우선 순위에 의존할 필요가 없습니다.
if(
((i==0) && (b==2))
||
((c==3) && !(f==5))
)
3진 연산자와 조합하면 혼동을 일으키는 & & 및 (&은 및보다 우선도가 높음) 간에 우선순위가 다릅니다.예를 들어.
$predA && $predB ? "foo" : "bar"
문자열이 반환됩니다.
$predA and $predB ? "foo" : "bar"
부울을 반환합니다.
'and' - '&' - '&' - '&'의 차이를 설명하겠습니다.
&"와 "and"는 모두 논리적 AND 연산이며 동일한 작업을 수행하지만 연산자의 우선순위는 다릅니다.
연산자의 우선순위(priority)는 두 식을 "엄밀하게" 바인딩하는 방법을 지정합니다.예를 들어 식 1 + 5 * 3에서는 곱셈("*") 연산자가 더하기("+") 연산자보다 우선 순위가 높기 때문에 답은 16이고 18이 아닙니다.
1회 조작으로 조합하면 예기치 않은 결과를 얻을 수 있습니다.항상 &&를 사용하는 것을 추천합니다만, 선택하실 수 있습니다.
반면 &은 비트의 AND 연산입니다.정수값 내의 특정 비트의 평가 및 조작에 사용됩니다.
예를 들어 (14 & 7)을 실행하면 결과는 6이 됩니다.
7 = 0111
14 = 1110
------------
= 0110 == 6
어떤 버전을 사용하고 있습니까?
제가 쓰고 있는 특정 코드베이스의 부호화 규격에 어떤 연산자를 사용해야 하는지 명시되어 있다면, 반드시 그것을 사용합니다.만약 그렇지 않다면, 어떤 것을 사용해야 하는지(자주 사용할 수 없고 쉽게 해결할 수 있음) 코드가 정해져 있다면, 저는 그것을 사용합니다.그렇지 않으면 아마 &&
.
'and'가 '&'보다 읽기 쉽습니까?
그게 너한테 더 읽기 쉬울까?정답은 예, 아니오입니다. 조작자 주변의 코드와 실제로 판독하는 사람의 코드에 따라 달라집니다.
|| ~차이가 있나요?
예. 다음 논리 연산자를 참조하십시오.||
및 비트 연산자:~
.
하나의 는 '보다 낫다'입니다.if
「」가 없는 =
할당 조작.
if (true || true && false); // is the same as:
if (true || (true && false)); // TRUE
그리고.
if (true || true AND false); // is the same as:
if ((true || true) && false); // FALSE
AND
에 「」는 「」입니다.||
높은 우선 순위
은 다 , 다 다르다, 다 다르다, 다 다르다, 이런 이야기들이에요.true, false, false
★★★★★★★★★★★★★★★★★」true, true, false
상세한 예에 대해서는, https://ideone.com/lsqovs 를 참조해 주세요.
취향의 문제라고 생각합니다만, (실수로) 섞으면 바람직하지 않은 행동을 할 수도 있습니다.
true && false || false; // returns false
true and false || false; // returns true
따라서 & 및 |를 사용하는 것이 우선 순위가 가장 높기 때문에 더 안전합니다.가독성에 관해서는, 이러한 연산자는 충분히 보편적이라고 말할 수 있습니다.
업데이트: 두 작업 모두 false를 반환한다는 코멘트에 대해... 위 코드는 아무것도 반환하지 않습니다.모호한 점 죄송합니다.명확히 하자면, 두 번째 경우의 동작은 조작의 결과가 어떻게 사용되는지에 따라 달라집니다.여기서 연산자의 우선순위가 어떻게 작용하는지 관찰해 주십시오.
var_dump(true and false || false); // bool(false)
$a = true and false || false; var_dump($a); // bool(true)
<고객명>$a === true
이는 할당 연산자가 논리 연산자보다 우선하기 때문이며, 이는 다른 답변에서 이미 잘 설명되어 있습니다.
다음은 반대 예를 제시하겠습니다.
$a = true;
$b = true;
$c = $a & $b;
var_dump(true === $c);
출력:
bool(false)
를 일으킬 더 높다고 =
»==
보다 덜 에 띌 이다.adn
/ro
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ.FWIW, 선호도를 표현하는 대부분의 PHP 프레임워크는 및/또는 둘 다 지정합니다.나도 문제가 될만한 실제적이고 통제되지 않은 사건에 부딪힌 적이 없다.
언급URL : https://stackoverflow.com/questions/2803321/and-vs-as-operator
'programing' 카테고리의 다른 글
Spring Integration을 사용하는 시기와낙타? (0) | 2022.10.05 |
---|---|
Mysql 변환 테이블, 조회가 변경되지 않음 (0) | 2022.10.05 |
암호 프롬프트 없이 Ubuntu에 MySQL 설치 (0) | 2022.10.05 |
Python 클래스의 메서드 목록을 가져오려면 어떻게 해야 합니까? (0) | 2022.10.05 |
JavaScript 인코딩과 동등한 것은 무엇입니까?PHP의 URI 컴포넌트? (0) | 2022.10.05 |