limits.h hilfe wegen 0L und 1L !!



  • so also ich hab hier nen quellcode:

    #include <limits.h>
    
    void main (void)
    
    {
      unsigned long int maxtropf, j, k= 0L, sz= 0L, s;
      double rx, ry;
    
      printf ("\n\nMonte-Carlo - Methode:");
      printf ("\n\nGib Hoechstzahl der Tropfen: ");
      scanf ("%lu", &maxtropf);
      printf ("\nGib Schrittweite der Anzeige: ");
      scanf ("%lu", &s);
    
      printf ("\n\n    Tropfen      Pi");
      printf   ("\n------------------------");
    
      for (j= 0L; j <= maxtropf; j++)
      {
        rx= ((double) rand ())/(double) INT_MAX;
        ry= ((double) rand ())/(double) INT_MAX;
    
        if ((rx*rx + ry*ry) <= 1.0)
        {
          k++;
        }
    
        sz++;
    
        if ((sz > s) && j)
        {
          printf ("\n  %10lu     %lf", j, 4.0*((double) k/(double) j));
          sz= 1L;
        }
      }
    }
    

    da drin is die rede von 0L und 1L:

    k= 0L
    sz= 0L
    sz= 1L
    

    jetzt die frage:
    was heist das 0L und 1L ????

    plz help ich bin planlos



  • 0L ist die Zahl 0 als long int. Es gibt einige solcher Suffixe für Zahlen, mit denen man bestimmte Typen erzwingen kann:
    u unsigned
    l long
    ul oder lu unsigned long
    ll, ull, llu genauso, nur für long long (falls der Compiler das unterstützt)
    f float

    Im Grunde ist das bei 0 sinnlos, weil der Compiler auch eine int-Null automatisch ohne Probleme in long übersetzen kann. Bei deinem Programm jedenfalls. In anderen Fällen mag das anders aussehen, aber mir fällt gerade kein einfaches Beispiel ein.
    Da wollte bei dir wohl einfach jemand besonders sauber programmieren ... es hätte aber dann auch 0LU sein müssen 😉



  • 😉 danke versteh ich gleich mal bissel mehr


Anmelden zum Antworten