> On Oct 13, 2015, at 15:24 , Graham Cox <graham....@bigpond.com> wrote: > > In a piece of code I haven’t worked on in a while, I’m suddenly getting a new > warning which I’ve never seen before: > > “Multiple unsequenced modifications to ‘ix’” > > Code is: > > > ix = ++ix % guess.count; > > where ix is a NSUInteger. > > Is this telling me that the order of the preincrement and the mod operation > is undefined? Surely a preincrement is defined to happen first, that’s why > it’s called a PREincrement? Or does the warning refer to something else? I’ve > used this form of expression for years without any issues, why is it suddenly > one?
The answer is here. It seems ridiculous, but there it is: http://en.cppreference.com/w/c/language/eval_order#Undefined_behavior You can read the entire page a few times to try to understand why. I still don't, and think this is counterintuitive at best, and plain wrong at worst. At least I prefer to make those kinds of things explicit anyway, and am not likely to write that code. ix += 1; ix %= guess.count; hth, -- Rick Mann rm...@latencyzero.com _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com