Actually, I am facing a codebase where developpers decided to use 'AND
' and 'OR
' instead of '&&
' and '||
'. I know that there is difference in operators precedence (&&
goes before 'and
'), but with given framework (prestashop to be precise) is clearly not a reason.
So, my question: which version are you using? Is 'and
' more readable than '&&
'? ||
there is ~
difference?
views:
297answers:
7I think there is no specific reason/difference except for the precedence as you said. Programmers are more used to using &&
instead of and
as this is the case in most programming languages. The and
and or
is more readable and human than &&
and ||
but this should not be a problem for programmers. I don't see any particular reason why they are using and
and or
for their project. I am not sure but there may be something with the speed meaning &&
and ||
might be faster than their other counter-parts. Interestingly, this is the case with CodeIgniter (PHP framework) too.
I don't know if there's a precedence difference between &&
and AND
but I really believe that &&
is faster than AND
since it's more "machine language" than AND
and lots of other languages don't accept AND
or OR
logical operators.
Depending on how it's being used, it might be necessary and even handy. 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: (($e = false) or true)
$f = false or true;
But in most cases it seems like more of a developer taste thing, like every occurrence of this that I've seen in CodeIgniter framework like @Sarfraz has mentioned.
I guess it's a matter of taste, although (mistakenly) mixing them up might cause some undesired behaviors:
true && false || false; // returns false
true and false || false; // returns true
Hence, using && and || is safer for they have the highest precedence. In what regards to readability, I'd say these operators are universal enough.
Hi,
Normally The people who are as Microsoft(VB and .Net) developers always use "AND" and "OR" since it those languages need not to be a Case Sensitive, But the people who are in C, C++, PHP, JAVA are always used "&&" and "||" since those languages are Case Sensitive.
This is what my taught...
If you use AND
and OR
, you'll eventually get tripped up by something like this:
$this = true;
$that = false;
$truthiness = $this and $that;
Want to guess what $truthiness
equals?
If you said false
... bzzzt, sorry, wrong!
$truthiness
above has the value true
. Why? =
has a higher precedence than and
. The addition of parentheses to show the implicit order makes this clearer:
($truthiness = $this) and $that
If you used &&
instead of and
in the first code example, it would work as expected and be false
.
which version are you using?
If the coding standards for the particular codebase I am writing code for specifies which operator should be used, I'll definitely use that. If not, and the code dictates which should be used (not often, can be easily worked around) then I'll use that. Otherwise, probably &&
.
Is 'and' more readable than '&&'?
Is it more readable to you. The answer is yes and no depending on many factors including the code around the operator and indeed the person reading it!
|| there is ~ difference?
Yes. See logical operators for ||
and bitwise operators for ~
.