Date: Thu, 27 Jul 2006 14:22:24 -0400 From: "Olson, Arthur David \(NIH/NCI\) [E]" <olsona@dc37a.nci.nih.gov> Message-ID: <B410D30A78C6404C9DABEA31B54A2813997ADE@nihcesmlbx10.nih.gov> | Now if only C had an &&= operator... Sometimes that would be useful, but it turns out, it would not be needed here. What's more, now those inappropriate &= can be removed as well - the "if" that is added assures us that sp->goback (and sp->goahead of course) are true before those expressions are evaluated. And of course, true && x is identical to x, so all you need in those expressions is a simple assignment now. I'd also add extra parentheses in the "if". Well, actually, I probably wouldn't, but with the absurd pickiness (programmer protection, even when neither wanted nor desired) of C compilers these days, it is probably a good idea to make it be if ((sp->goback = sp->goahead = (sp->timecnt > i))) { And even perhaps insert a != 0 test, just to show that it really is intended. Or, if you were willing to make it be a little different style, write it as ... sp->goback = sp->goahead = FALSE /* or 0 */ ; if (sp->timecnt > i) { sp->goback = sp->types[i] == sp->types[0] && differ_by_repeat(sp->ats[i], sp->ats[0]); sp->goahead = sp->types[sp->timecnt - 1] == sp->types[sp->timecnt - 1 - i] && differ_by_repeat(sp->ats[sp->timecnt - 1], sp->ats[sp->timecnt - 1 - i]); } kre