xor의 우선순위

6146 단어 PHP

개요


xor 연산자의 행동은 매우 이상하다.true xor truetrue가 되다.

빠질 때의 코드


ideone
php
<?php

$P = true;
$Q = true;

$cond = $P xor $Q;

echo 'P is '.stringify($P)."\n";
echo 'Q is '.stringify($Q)."\n";
echo 'P xor Q is '.stringify($cond)."\n";


function stringify($bool)
{
    if ($bool) {
        return 'true';
    }

    return 'false';
}
stdout

P is true
Q is true
P xor Q is true # おかしい

XOR(배타적 논리 및)


T
F
T
F
T
F
T
F
F 일 거예요.
위 코드에서
T가 되다

잘못된 요점

xor의 우선순위비=는 낮다.
PHP:연산자 우선순위-Mual


이 의식은
$cond = $P xor $Q;
이것과 대등하다
($cond = $P) xor $Q;
$cond대입$Ptrue이 반환치true$Qxorfalse 평가
그 평가치는 허공에 던져졌다.

수정


따라서 코드는 다음과 같이 수정됩니다.
ideone
php
<?php

$P = true;
$Q = true;

$cond = ($P xor $Q); # 修正

echo 'P is '.stringify($P)."\n";
echo 'Q is '.stringify($Q)."\n";
echo 'P xor Q is '.stringify($cond)."\n";


function stringify($bool)
{
    if ($bool) {
        return 'true';
    }

    return 'false';
}
stdout
P is true
Q is true
P xor Q is false
아 k

좋은 웹페이지 즐겨찾기