- 12V Akku mit 280 Ah bauen         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: int Variable, Grenzbereiche

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    HaWe
    Gast
    Zitat Zitat von Sisor Beitrag anzeigen
    Sicher? Sollte 2 sein, nicht 3.
    ja, stimmt ntl!

    Code:
    void setup() {
      Serial.begin(115200);
      delay(1000);
      Serial.println();
    
      
      int x=3;
      int y=2;
      int z=2;
      
      int Bsp5 = 3/2*2;
      Serial.println(Bsp5);
      
      Bsp5 = x/y*z;
      Serial.println(Bsp5);
      
    }
    
    void loop() {
      
    
    }
    output:

    2
    2
    edit: sollte durchgestrichen sein, aber Durchstreichfunktion existiert hier nicht: [s]da es alles Konstanten sind, wird die "Berechnung" evtl vom Preprozessor erledigt, ohne Compiler[/s]

    Aber auch mit volatile int kommt erwartungsgemäß dasselbe Ergebnis.

    Code:
    void setup() {
      Serial.begin(115200);
      delay(1000);
      Serial.println();
    
      
      volatile int x=3;
      volatile int y=2;
      volatile int z=2;
      
      volatile int Bsp5 = 3/2*2;
      Serial.println(Bsp5);
      
      Bsp5 = x/y*z;
      Serial.println(Bsp5);
      
    }
    
    void loop() {
      
    
    }
    Geändert von HaWe (10.05.2020 um 14:57 Uhr)

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Der Präprozessor rechnet nicht. Er bearbeitet Anweisungen zum Einfügen von Quelltext (#include), zum Ersetzen von Makros (#define), und bedingter Übersetzung (#if).
    Code:
    #define CELSIUS_ZU_FAHRENHEIT( t ) ( ( t ) * 1.8 + 32 )
    Das Makro CELSIUS_ZU_FAHRENHEIT beschreibt die Umrechnung einer Temperatur (angegeben als Parameter t) aus der Celsius- in die Fahrenheit-Skala. Auch ein Makro mit Parametern wird im Quelltext ersetzt:

    Code:
    int fahrenheit, celsius = 10;
    fahrenheit = CELSIUS_ZU_FAHRENHEIT( celsius + 5 );
    wird durch den C-Präprozessor ersetzt zu:
    Code:
    int fahrenheit, celsius = 10;
    fahrenheit = ( ( celsius + 5 ) * 1.8 + 32 );
    Quelle
    Danach darf der Compiler gemäß der spezifizierten Rechenregeln weitermachen.

  3. #3
    HaWe
    Gast
    Zitat Zitat von Sisor Beitrag anzeigen
    Der Präprozessor rechnet nicht.
    danke, da war ich einem Irrtum aufgesessen, ich dachte wirklich dass er bereits bei konstanten Ausdrücken wie
    3/2*2
    quasi das konstante Zwischenergebnis einsetzt - tut also doch immer erst hinterher der Compiler.

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Variable auf LCD ausgeben
    Von Haveaniceday im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 20.07.2017, 18:57
  2. C++ Hinweis: variable 'pHelp' set but not used [-Wunused-but-set-variable]
    Von geWichtig im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 20.02.2017, 15:09
  3. Komplexe Variable
    Von DanielSan im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 19.06.2011, 14:30
  4. if Variable > 1 then Variable + 1
    Von klaus1973 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 26.11.2005, 14:31
  5. Pin mit Variable vergleichen
    Von Kundesbanzler im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 23.02.2005, 14:58

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad