Library für große Zahlen



  • Optimizer schrieb:

    1.) int ist immer der schnellste Typ. Das hast du auch behauptet. Stimmt aber leider ab 64 Bit dann nicht mehr. (Außer ein paar Compiler machen das, aber ich denke mal, die meisten nicht).

    int muss nicht der schnellste sein - er muss passend sein.

    2.) int hat immer z.B. 32 Bit. Das stimmt sowieso nicht, das wissen wir ja.

    Exakt - das habe ich als Vorteil hingestellt. Und dein Argument dagegen ist...?

    Es geht jetzt nicht um boost. Es geht darum, inwiefern die eingebauten Typen sinnvoll definiert sind. Schön, dass es Dinge wie boost oder ULONG_PTR ( 😉 ) gibt, aber noch viel schöner wäre es, wenn die eingebauten Typen eine feste Größe hätten und man keine hässlichen typedefs brauchen würde.

    *grml*
    Ich wiederhole mich.
    Was ist an typedefs schlecht?

    In C++ ist int nun mal ein high level konstrukt

    Und wenn es schon nicht so ist, dann hätte man wenigstens den Vorteil nutzen können, int immer zum schnellsten Typen zu machen, was aber auch nicht der Fall ist.

    Das wäre ungut, weil der schnellste Typ nunmal nicht passend sein muss.
    zB könnte der schnellste Typ ein 1 Byte typ sein - das wäre aber nicht passend, weil der Typ zu klein ist.

    Wo ist das Problem wenn int==long ist? Ausser das der Typ long dadurch den sinnlos verschwendet ist?

    Das sehe ich als Problem. Und weiter sehe ich es noch als Problem "long long" zu schreiben. Potthässlich. 🙄 Dann doch lieber __int64, am besten mit typedef __int64 int64.[/quote]
    Ja, wenn du long long nicht magst, kann niemand was dafür.

    Warum long nicht 64bit hat, weiss ich nicht. aber da alle Compiler es so machen, nehme ich an, dass es einen Grund gibt.

    zB ist kings Argument mit long ist der schnellste int Typ recht gut, bzw. einleuchtend.



  • int muss nicht der schnellste sein - er muss passend sein.

    Definiere "passend"... "Der Wortbreite entsprechend" trifft jedenfalls nicht zu.

    Exakt - das habe ich als Vorteil hingestellt. Und dein Argument dagegen ist...?

    Ich habe kein Argument dagegen genannt und das habe ich auch nicht vor. Aber du hast als Vorteil definiert, dass int dadurch der "passendste" Typ für die Maschine ist, was nicht stimmt. d.h. man hat weder die Vorteile einer festen Größe genutzt noch die Vorteile des immer passenden. Das habe ich bemängelt.

    Das wäre ungut, weil der schnellste Typ nunmal nicht passend sein muss.
    zB könnte der schnellste Typ ein 1 Byte typ sein - das wäre aber nicht passend, weil der Typ zu klein ist.

    Aha und wie soll das gehen, dass ein byte auf einem 64 Bit Prozessor der schnellste Typ ist?

    Ja, wenn du long long nicht magst, kann niemand was dafür.

    Da habe ich natürlich kein Argument dagegen. Wenn dir das lieber ist (oder dir zumindest egal ist), dass man statt "long" "long long" schreiben muss, weil long nicht genutzt wird, was soll ich dazu sagen?

    Warum long nicht 64bit hat, weiss ich nicht. aber da alle Compiler es so machen, nehme ich an, dass es einen Grund gibt.

    Ich nehme mal an, dass es eine Fehlentscheidung war, vorausgesetzt, ich bekomme keinen einleuchtenden Gegengrund zu hören...
    Ich lass mich ja gerne überzeugen, aber "das wird schon seine Gründe haben" leuchtet mir nicht ein. :p
    Weil es hat auch sicher seine Gründe, dass die meisten anderen Sprachen es anders handhaben.



  • Dir ist bewusst, dass int im Grunde nur ne Abkürzung ist?
    Denn es gibt den short int und den long int, welche man wiederum
    kurz als short und long schreiben kann. Für welche der beiden int
    steht ist dem Compilerbauer überlassen.



  • Wo hast du das her? short int, int und long int sind drei verschiedene Typen.

    Wobei das C-Typensystem doch im kleinen Bereich noch viel schlechter ist als im großen... Warum hat sich noch niemand beschwert, dass C einfach voraussetzt, dass ein char gleichzeitig die kleinste adressierbare Einheit, ein Zeichen im nativen Zeichensatz und zudem noch ein integraler Typ ist? o_O Klar steckt hinter allem "irgendein Grund", aber der war - vermute ich mal - oft genug "so hat es auf den C-Entwicklungsrechnern Sinn gemacht" oder eben Abwärtskompatibilität. Davon wird ein Design auch nicht schön.



  • operator void schrieb:

    Wo hast du das her? short int, int und long int sind drei verschiedene Typen.

    Aus C-EntPackt (von Herbert Schildt), dann hatte er mal wieder an der Stelle Müll geschrieben 😞


Anmelden zum Antworten