you are viewing a single comment's thread
view the rest of the comments
[–] 14 points 2 years ago* (2 children)
for (int y = MIN_INT; y <= MAX_INT; y++) {
        if (y == x + 1) {
                x = y;
        }
}

(Not sure there's a way to prevent Lemmy from escaping my left angle bracket. I definitely didn't type ampersand-el-tee-semicolon. You'll just have to squint and pretend. I'm using the default lemmy-ui frontend.)

  • source
  • hideshow 4 child comments
  • [–] 2 points 2 years ago (2 children)

    y <= MAX_INT will never be false, since the loop will overflow and wrap around to MIN_INT

    (You can escape code with `backticks`, and regular markdown rules)

  • source
  • parent
  • hideshow 4 child comments
  • [–] 4 points 2 years ago (1 child)

    It will not "overflow". Signed integer overflow is undefined behavior. The compiler could remove the whole loop or do anything else imaginable (or not).

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 2 years ago (1 child)

    TIL!

    I wonder how many languages out there do define what happens on integer overflow.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 2 years ago

    Languages with dynamic typing and implicit large-integer types, such as Python and Ruby, generally just convert to that large-integer type.

    I figured Java would probably define the behavior in the JVM, but based on a quick web search it sounds like it probably doesn't by default, but does provide library methods to add or subtract safely.

    Rust guarantees a panic by default, but provides library methods for wrapping, saturating, and unchecked (i.e. unsafely opting back in to undefined behavior).

  • source
  • parent
  • [–] 1 point 2 years ago* (1 child)

    Oh good call! What I was trying to do is more complex than I was thinking.

    Hmmmmm.

    int f = TRUE;
    for (int y = MIN_INT; f || y - 1 < y; y++) {
      f = FALSE;
      if (y == x + 1) {
        x = y;
      }
    }
    

    (I should just test my code to make sure it works, but I haven't. Heh.)

    Also, Lemmy escaped your angle bracket too. Back ticks don't seem to do the trick.

    Block: <
    

    Inline: <

    Or were you suggesting back ticks for some other purpose? (I did use back ticks in my first post in this thread.)

  • source
  • parent
  • hideshow 2 child comments