digitalmars.D.learn - Expression evaluation order in if statement
- Aarti_pl <aarti interia.pl> Aug 23 2007
- Lutger <lutger.blijdestijn gmail.com> Aug 23 2007
- Aarti_pl <aarti interia.pl> Aug 23 2007
- Frits van Bommel <fvbommel REMwOVExCAPSs.nl> Aug 23 2007
- Regan Heath <regan netmail.co.nz> Aug 23 2007
Hello!
Can I use if expression in following way, or is it an error?:
void func(char[] str) {
if (str !is null && str=="somestring") {
... some code ...
}
}
or should I rather use:
void func(char[] str) {
if (str !is null)
if (str=="somestring") {
... some code ...
}
}
The second way is more explicit and makes code unreadable soon...
I can find clear answer in docs...
BR
Marcin Kuszczak
(Aarti_pl)
Aug 23 2007
Aarti_pl wrote:Hello! Can I use if expression in following way, or is it an error?: void func(char[] str) { if (str !is null && str=="somestring") { ... some code ... } }
It's ok, see: http://www.digitalmars.com/d/expression.html#AndAndExpression "If the left operand, converted to type bool, evaluates to false, then the right operand is not evaluated."
Aug 23 2007
Lutger pisze:Aarti_pl wrote:Hello! Can I use if expression in following way, or is it an error?: void func(char[] str) { if (str !is null && str=="somestring") { ... some code ... } }
It's ok, see: http://www.digitalmars.com/d/expression.html#AndAndExpression "If the left operand, converted to type bool, evaluates to false, then the right operand is not evaluated."
Great. Thanks for advice! BR Aarti_pl
Aug 23 2007
Aarti_pl wrote:Lutger pisze:Aarti_pl wrote:Hello! Can I use if expression in following way, or is it an error?: void func(char[] str) { if (str !is null && str=="somestring") { ... some code ... } }
It's ok, see: http://www.digitalmars.com/d/expression.html#AndAndExpression "If the left operand, converted to type bool, evaluates to false, then the right operand is not evaluated."
Great. Thanks for advice!
Also, for arrays "null" is just an empty array, so you don't need the first part: 'if (str == "something")' works just fine even if 'str' is null (unlike with classes). (A while back some people were complaining about this, but I don't think this behavior is likely to change)
Aug 23 2007
Frits van Bommel wrote:Aarti_pl wrote:Lutger pisze:Aarti_pl wrote:Hello! Can I use if expression in following way, or is it an error?: void func(char[] str) { if (str !is null && str=="somestring") { ... some code ... } }
It's ok, see: http://www.digitalmars.com/d/expression.html#AndAndExpression "If the left operand, converted to type bool, evaluates to false, then the right operand is not evaluated."
Great. Thanks for advice!
Also, for arrays "null" is just an empty array, so you don't need the first part: 'if (str == "something")' works just fine even if 'str' is null (unlike with classes). (A while back some people were complaining about this, but I don't think this behavior is likely to change)
If you're referring to me, I wasn't complaining about this behaviour at all, this behaviour is great, I hope it never changes. Regan
Aug 23 2007








Regan Heath <regan netmail.co.nz>