Re: Side effects in conditional expressions
- From: Edward <ec429@xxxxxxxxx>
- Date: Sat, 02 Oct 2010 15:15:13 +0100
August Karlstrom wrote:
On 2010-10-02 14:28, Edward wrote:No, I think that's reasonable (essentially it's describing an LDCPIR, which one would hope the compiler would be clever enough to optimise it into), except that if using the result of an assignment as a condition you should enclose in an extra set of brackets. Typically your compiler should warn you otherwise (as you might have meant == instead). Of course, unless you want to compare to something other than zero, string.h's strcpy() would be more appropriate.It depends. If you're entering the IOCCC, it's acceptable if a little
too readable. Anywhere else, it's asking for trouble. The harder you
have to work to understand the code, the more likely subtle bugs are to
get past you
Exactly. As I have already mentioned in this thread I wouldn't write this kind of code myself. Would you also reject the string copy idiom
while (*t++ = *s++);
with the same motivation?
/August
The interesting one, though, is if you want to copy within an array, perhaps even copying between regions which overlap - since then you need to be able to choose whether it LDIRs or LDDRs. In that case you might have something like
while(i++,a[i-1]=a[i]);
to shift down, but
while(a[i]=a[i-1],i--);
to shift up (of course you'd have to initialise i appropriately).
You have to be careful, though, not to invoke UB with something like that (hence why I've used separate comma expressions to inc/dec i).
-Edward
--
"Sanity" is the last refuge of the unimaginative.
visit my useless website -- http://dev-null.chu.cam.ac.uk
.
- Follow-Ups:
- Re: Side effects in conditional expressions
- From: August Karlstrom
- Re: Side effects in conditional expressions
- References:
- Side effects in conditional expressions
- From: August Karlstrom
- Re: Side effects in conditional expressions
- From: Edward
- Re: Side effects in conditional expressions
- From: August Karlstrom
- Side effects in conditional expressions
- Prev by Date: Is there a version of assert() that doesn't exit?
- Next by Date: Re: Is there a version of assert() that doesn't exit?
- Previous by thread: Re: Side effects in conditional expressions
- Next by thread: Re: Side effects in conditional expressions
- Index(es):
Relevant Pages
|