• lhamil64@programming.dev
    link
    fedilink
    arrow-up
    43
    ·
    11 months ago

    This looks like a C macro. Basically what it does is replaces the word “true” in the code with (rand() > 10). The rand() function will return a random number from 0 to 32767. So (rand() > 10) will very likely return “true” but not always.

    So say you have some code like this: if (someVar == true) { // Do stuff } It would replace “true” with code that usually evaluates to “true” but not always. So every so often your code would just do the wrong thing but it would be hard to debug because it would be rare.

    Granted, in that example you probably would just write “if (someVar)” making this moot, but there are more realistic cases where you’d use the constant “true”

    • TwilightKiddy@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      11 months ago

      rand() generates a number from 0 to a constant defined in stdlib, which usually corresponds to the architechture of your compiler. So, for 32 bit systems (assuming all the software in the line is 32 bit, too) it will be 2^31-1 = 2 147 483 647, as 1 bit in integers is reserved for negative numbers and 1 number is 0.

      Though, by design it is guaranteed to be at least 32767, which is a value for 16 bit integers.

      • lhamil64@programming.dev
        link
        fedilink
        arrow-up
        1
        ·
        11 months ago

        Oh good to know. I googled it and got that 32767 number but it did say “guarantee to be at least 32767”