Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

C/C++ is just 1 in the limit, right?


two things wrong with your statement:

- the ++ operator only acts on integer types, not floats or doubles, so there is no limit to speak of here

- the expression "C++" has value equal to C before incrementing, hence the expression "C/C++" is just one for positive C, even when C is small


Hey, wait a minute, ++ is defined for floats.

It might be a bad idea to use it in many cases (since there are values for which the result is just rounded back to the original value), but it works!


So, luckily my mistakes cancel out -- C/C++ = 1 always, so it must also in the limit. Once we figure out how to define limit.


> the ++ operator only acts on integer types

no, I believe it works on pointer types and enums as well


It is also defined for floats.

Using it seems like a bad move though -- for large values it can round back to the input value.

Indeed, the following stupid test program works, although it may heat up your laptop slightly.

    #include <stdio.h>

    void main()
    {
      float C   = 1.0f;
      float Cin = 0.0f;
      int i=0;

      while (Cin != C)
      {
        i++;
        Cin = C;
        C++;
      }
      printf("%i %e\n", i, C/C++);
    }
And, it finally lets us confirm what the mathematicians never could. When does the limit happen? 16777216. No further questions.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: