KatolaZ <kato...@freaknet.org> wrote:

> Be careful, because conditional expressions in C are subject to
> "short-circuiting", meaning that only the minimum number of
> expressions sufficient to determine the value of a chain of && and ||
> will be evaluated. In particular, a chain of || expressions will be
> evaluated until there is one that evaluates to TRUE (!=0), while a
> chain of && is evaluated until there is one of them which evaluates to
> false (==0).

Indeed, and that is the whole point behind using them in this way. I use them a 
fair bit in shell programming :
eg
> [ <test expression> ] && something_to_do_if_test_matches

instead of
> if [ <test expression> ]
>   then
>     something_to_do_if_test_matches
> fi

or even on the command line as in :
> apt-get update && apt-get upgrade

There can be some situations that can trip you up, eg it might seem clever to 
do :
> some_command && another_command && echo "It worked !" || echo "Failed"


While a simple "echo" is unlikely to fail, if that step does fail (eg you are 
writing status to a file and there's a problem) then you could find both your 
'success' and 'fail' commands being run.

Used intelligently the && and || operators can both aid readability and improve 
performance - but equally can be used to obfuscate (either deliberately or 
accidentally).

_______________________________________________
Dng mailing list
Dng@lists.dyne.org
https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng

Reply via email to