integer-Berechnung: reihenfolge festlegen



  • int v = (2*6)/10; glaub ich dir nicht, dass da 0 rauskommt... Compiler? Ich bin mir ziemlich sicher, dass jeder Compiler das selbe daraus macht:
    int v = 1;

    bb



  • Er SOLL ganzhzahlen aufnehmen, also

    int v = (2*6)/10;
    <=> v = 12/10;
    <=> v = 1;

    Allerdings habe ich eine vereinfachte Version angegeben. Bei mir sieht es so aus:

    [code]
    typedef struct{
    int amember
    } Type;
    
    Type a[100];
    a[0].amember = 6000;
    
    int b = 2000;
    
    int c = (a[0].amember * b)/10000;
    [/code]
    

    und da ist c = 0.

    (a ist eigentlich ein array von zeigern, wird mit 'new' zusammengebaut, aber ich würde nicht sagen, dass das was ändert)

    PS habe 2*6/10 implementiert und es ist tatsächlich 1, Compiler ist der von Micro$oft's Visual Studio.

    Mfg
    angspino



  • Da kommt 1200 raus. Geht sauber auf.

    ANGs_Pino schrieb:

    [...](a ist eigentlich ein array von zeigern, wird mit 'new' zusammengebaut, aber ich würde nicht sagen, dass das was ändert)[...]

    Ich würde sagen, doch, das ändert was.



  • Tachyon schrieb:

    Da kommt 1200 raus. Geht sauber auf.

    ANGs_Pino schrieb:

    [...](a ist eigentlich ein array von zeigern, wird mit 'new' zusammengebaut, aber ich würde nicht sagen, dass das was ändert)[...]

    Ich würde sagen, doch, das ändert was.

    nämlich was?


  • Administrator

    Gibt wunderbar 1'200. Und ich verwende hier auch den MS Compiler, Version 2005.
    Ich würde mal sagen, in deiner Rechnung haben die Variablen nicht den Wert, welcher du erwartest. Schon mal mit dem Debugger drüber gegangen?

    Übrigens:

    typedef struct{
    int amember
    } Type;
    
    // Das ist C! In C++ macht man das so:
    struct Type
    {
      int amember;
    }
    

    Grüssli



  • Keine Ahnung. Du zeigst ja den relevanten Code nicht. Vermutlich ist da irgendwo ein Bock drin, aber meine Glaskugel hängt zuhause am Weihnachtsbaum.



  • Dravere schrieb:

    Gibt wunderbar 1'200. Und ich verwende hier auch den MS Compiler, Version 2005.
    Ich würde mal sagen, in deiner Rechnung haben die Variablen nicht den Wert, welcher du erwartest. Schon mal mit dem Debugger drüber gegangen?

    Übrigens:

    typedef struct{
    int amember
    } Type;
    
    // Das ist C! In C++ macht man das so:
    struct Type
    {
      int amember;
    }
    

    Grüssli

    (sorry für C 😉 )

    bin schon mit dem debugger drüber, daher kenn ich ja die Werte von a[0].amember und b (dir ändern sich in der schleife und immer wenn b/10000 = 0 ist, dann ist auch c = 0.

    angspino



  • Dravere schrieb:

    Übrigens:

    typedef struct{
    int amember
    } Type;
    
    // Das ist C! In C++ macht man das so:
    struct Type
    {
      int amember;
    }
    

    Grüssli

    /offtopic

    Ändert's was an der Ausführung ob ich die C Variante oder die C++ Variante verwende?



  • Das sollte keinen Einfluss haben. Aber zeig doch jetzt bitte mal genau, wann es bei dir nicht stimmt. Geh mit dem Debugger und dann hol dir die Werte und hardcode sie und dann nochmal prüfen. Und wenn es dann immernoch falsch ist zeig das genaue Beispiel mal her.



  • a) hättest Du das ausprobieren können, und b) nein, das ändert nichts.
    Das Problem liegt woanders...


Anmelden zum Antworten