Präprozessor und Mathe

Gast #100413
Hi zusammen!

Bin gerade zum ersten mal darüber gestolpert. Ich weis leider nicht,
wie ich den Präprozessor zum Exponenzieren überrede :(
Folgender Ausdruck bringt nicht das gewünschte Ergebnis:

#define PRESCL (2^(((1 << CS13) | (1 << CS11)) - 1))

Einfacher noch:

#define PRESCL (2^2)

Ergibt 0 (null), sollte 4...

Verwende ich das falsche Symbol?
Gast
Wenn Du Dir mal überlegst, daß C selbst keinen Operator fürs
Potenzieren kennt (sondern nur die Funktion pow() in der
Mathematikbibliothek, die mit Gleitkommazahlen arbeitet), dann sollte
der Schluß recht nahe liegen, daß der Präprozessor das einfach mal
nicht kann.
Gast
Das ist ja richtig mies :(
Man kann das nichtmal durch irgendwelches schieben oder so ersetzen...
Und zwei defines für ein und dasselbe sind irgendwo wieder
fehlerträchtig. Naja, bleibt mir wohl nichts anderes übrig!
Gast
Der Präprozessor kann das, aber ^ bedeutet EXOR.

Potenzieren kann er mit einem Makro auch:

# define mc_POTENZ(a, b) {int i, foo=a; for(i=0;i<b;i++)a*=foo;}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.