Hacker News new | ask | show | jobs
by kdoherty 4122 days ago
Unsigned int >= 0 in a decrementing for-loop is a classic trap
1 comments

Some would twitch at this:

for(i = length - 1; i < SIZE_MAX ; i--)

but it is completely valid.

The twitchers are right. Whoever wrote that line of code is a smartass who is deliberately obfuscating stuff. Don't work with these people!
I prefer to learn, rather than stay ignorant, when I find new tech.

The only people I would not want to work with are ignoramuses and ironically, smart-asses. So you.

just fucking use

  for(i = 0; i < length; i++)
    .. do something with (length - i - 1) ..
I've been much happier since I started writing all loops as incrementing loops.

    for (i = 0; i <= length; i++)
        .. boy I sure hope length is not a max value ..
It's not about the incrementing vs. decrementing so much as the equality bounded loop on a value that could be a min/max value. Gets you every time.
Assuming, of course, i is size_t and not int.
My reply to kdoherty isn't assuming that. Read the parent carefully.
I don't see it, can you explain why this works with `int`?
It doesn't work for int, but kdoherty specified unsigned int.