Guten Abend,
ich hab aktuell das Problem, dass C ein "*" falsch versteht als Cast zu
einem Pointer, dabei soll es eine Multiplikation sein. Bei folgender
Formel tritt das auf:
Wenn man mir sagt, wie ich verhindere, dass C das "*" als Pointer
missversteht, dann mache ich es gerne selber.
Edit: Ich habs mit Zwischenvariablen gelöst, sorry für das unnötige
Problem:
Max M. schrieb:> ich hab aktuell das Problem, dass C ein "*" falsch versteht als Cast zu> einem Pointer
Wie kommst du darauf, dass der Compiler einen Cast sieht? Die Syntax
eines Casts ist ein in Klammern geschriebener Datentyp, den ich (und
vermutlich auch der Compiler) hier aber nirgends finden kann.
Allerdings sind die Minuszeichen fehlerhaft: Anstelle der beiden '–'
sollte jeweils '-' stehen. In der aufgeteilten Version der Formel sind
sie richtig.
Yalu X. schrieb:> Allerdings sind die Minuszeichen fehlerhaft: Anstelle der beiden '–'> sollte jeweils '-' stehen. In der aufgeteilten Version der Formel sind> sie richtig.
Au Mann. Da muss man auch erstmal drauf kommen.
Wer schreibt so beschissen(en) Code? :-(
Wobei man dem Ding zugute halten muss, dass es eigentlich korrekte
Unicode-Minuszeichen nimmt. Blöd, wenn der Compiler einen Bindestrich
erwartet ;-)
OT: Gibt es eigentlich eine Programmiersprache, die
Unicode-Minuszeichen, -Kleiner-Gleich-, -Größer-Gleich- und
-Ungleichzeichen statt der Zusammensetzungen erlaubt?
Sebastian L. schrieb:> Wobei man dem Ding zugute halten muss, dass es eigentlich korrekte> Unicode-Minuszeichen nimmt.
Nein, auch das verwendete Symbol "–" ist kein Minuszeichen, sondern ein
Halbgeviertstrich (U+2013, EN DASH), der bspw. in deutschsprachigen
Texten als Gedankenstrich verwendet wird. Das echte Minuszeichen ist "−"
(U+2212, MINUS SIGN). Beide unterscheiden sich vom Bindestrich "‐"
(U+2010, HYPHEN) dadurch, dass sie länger sind. Das Minuszeichen ist
aber meist etwas dicker als der Halbgeviertstrich und steht etwas höher
über der Grundlinie.
Das ASCII-Zeichen "-" (U+002D) wird historisch bedingt sowohl als
Bindestrich als auch als Minuszeichen verwendet und heißt deswegen in
Unicode HYPHEN-MINUS. Wenn also kein echtes Minuszeichen verfügbar ist,
sollte dieses Zeichen verwendet werden, auf keinen Fall aber der
Halbgeviertstrich.
Sebastian L. schrieb:> OT: Gibt es eigentlich eine Programmiersprache, die> Unicode-Minuszeichen, -Kleiner-Gleich-, -Größer-Gleich- und> -Ungleichzeichen statt der Zusammensetzungen erlaubt?
In Haskell dürfen Operatoren und Bezeichner auch Zeichen außerhalb des
ASCII-Bereichs enthalten. So definiert das Modul Prelude.Unicode u.a.
die folgenden Operatoren:
1
≤ ≥ ≮ ≯ ≠ Vergleiche
2
⋅ ÷ Multiplikation und Division
3
∘ Verkettung von Funktionen
4
∧ ∨ ¬ Logikoperatoren
5
∈ ∉ Elementrelation
6
π Kreiszahl
7
ℤ ℚ Datentypen (ganze bzw. rationale Zahlen)
In anderen Modulen sind weitere Operatoren für spezielle Datentypen
definiert.
Das Minuszeichen ist nicht dabei, aber man kann es sich leicht selbst
definieren:
Yalu X. schrieb:> Nein, auch das verwendete Symbol "–" ist kein Minuszeichen, sondern ein> Halbgeviertstrich (U+2013, EN DASH), der bspw. in deutschsprachigen> Texten als Gedankenstrich verwendet wird. Das echte Minuszeichen ist "−"> (U+2212, MINUS SIGN). Beide unterscheiden sich vom Bindestrich "‐"> (U+2010, HYPHEN) dadurch, dass sie länger sind. Das Minuszeichen ist> aber meist etwas dicker als der Halbgeviertstrich und steht etwas höher> über der Grundlinie.
Ein "Hyphen" ist doch ein Trennstrich? Also kürzer als Minus, Binde- und
Gedankenstrich.
Trennstrich: in "Binde-" von oben bzw. bei Worttrennung (TeX -, HTML -
oder ­)
Bindestrich: wie in "Satz von Banach-Tarski" (TeX --, HTML –)
Gedankenstrich nochmal länger (TeX ---, HTML —)
Minus: In Formeln (TeX - in math-Mode, HTML −) wobei TeX Minus als
Infix nochmal anders setzt als als Vorzeichen.
Das ­ in HTML markiert lediglich eine Trennstelle; ob tatsächlich
ein - ausgegeben wird hängt vom konkreten Textssatz ab. Oft erkennt man
Texte, die jemand per Copy & Paste erstellt hat, an "-" mitten im Wort
wie bei "Binde-strich" mitten im Text. Das entsteht dadurch, dass im
Originaltext das "Binde-" am Zeilenende stand und das "strich" am Anfang
der nächsten Zeile. Nach Copy+Paste bleibt der Trennstrich erhalten,
weil nicht erkannt wird, dass dieser entstand durch "Binde­strich"
(HTML) oder dass ein Textsatzprogramm wie TeX "Bindestrich" automatisch
trennte.
Max M. schrieb:> Wie kann ich das verhindern?
Zunächst solltest Du uns die Deklaration der verschiedenen Variablen
zeigen, damit wir deren Typen kennen. Sonst ist und bleibst das
blindes Gerate.
Johann L. schrieb:> Ein "Hyphen" ist doch ein Trennstrich? Also kürzer als Minus, Binde-> und Gedankenstrich.
Es ist ein so genannter Viertelgeviertstrich, der sowohl als Trenn- als
auch als Bindestrich verwendet wird.
> Trennstrich: in "Binde-" von oben bzw. bei Worttrennung (TeX -, HTML -> oder ­)
Der ­ (soft hyphen) in HTML unterscheidet sich vom "-" nicht im
Aussehen, sondern nur in der Semantik, aber das hast du ja bereits
ausführlich erklärt.
> Bindestrich: wie in "Satz von Banach-Tarski" (TeX --, HTML –)
Der Bindestrich dient dazu, aus zwei Einzelwörtern ein zusammengesetztes
Wort zu bilden und ist dasselbe Zeichen wie der Trennstrich (also "-" in
TeX und HTML).
Der Halbgeviertstrich (-- bzw. &ndash) hingegen wird anstelle von "von
... bis"
Bahnlinie Hamburg–Berlin
Schuhgröße 39–42
und im Deutschen zusätzlich als Gedankenstrich verwendet.
Bei "Banach-Tarski" handelt es sich nicht um ein zusammengesetztes Wort
im eigentlichen Sinn. Der Strich soll hier eine Beziehung zwischen den
beiden Personen (konkret: die Tatsache, dass der Satz in einer
Zusammenarbeit entstanden ist) ausdrücken. In diesem Fall wird im
Englischen oft ebenfalls der Halbgeviertstrich verwendet, im Deutschen
ist das aber unüblich.
> Gedankenstrich nochmal länger (TeX ---, HTML —)
Das ist der Geviertstrich, der im Englischen als Gedankenstrich, im
Deutschen aber so gut wie überhaupt nicht verwendet wird.
> Minus: In Formeln (TeX - in math-Mode, HTML −) wobei TeX Minus als> Infix nochmal anders setzt als als Vorzeichen.
IMHO ist das Subtraktions- und das negative Vorzeichen dasselbe Zeichen,
nur dass letzteres etwas näher an die nachfolgende Zahl oder Variable
gerückt wird.
Oje, und das Ganze nur, weil mal wieder einer Quellcode aus dem Internet
gecopypastet hat, der irgendwann auf seinem Weg dorthin eine fehlerhafte
Autokorrektur à la Word durchlaufen hat :)
Rufus Τ. F. schrieb:> C-Quelltext ist üblicherweise 7-Bit-ASCII, und damit erübrigen sich> sämtliche typographischen Betrachtungen.
Nicht wenn der Themenersteller mit verhunztem Code ankommt, woraus eben
gerade der Fehler resultiert.
Rufus Τ. F. schrieb:> Genau lesen. Das ist dann nämlich kein C-Quelltext mehr, sondern nur> etwas, was vage ähnlich aussieht.
Wenn der Themenersteller das alles kapieren würde, würde er ja die Frage
so nicht stellen.
Mark B. schrieb:> Wenn der Themenersteller das alles kapieren würde, würde er ja die Frage> so nicht stellen.
Die ist doch längst erschöpfend beantwortet. Was höchstens noch offen
ist ist deine Frage:
Mark B. schrieb:> Wer schreibt so beschissen(en) Code? :-(
Die wurde aber auch schon beantwortet. Man kann sie nochmal mit Murphy
und Einstein beantworten, sprich jeder Fehler und sei er noch so blöd
wird irgendwann mal vorkommen, und es wird immer noch ejemand geben der
eine noch dümmere Idee hat.
Arc N. schrieb:> (Formatierung nicht von mir... und BME280_SHIFT_BIT_POSITION_BY_14_BITS> ist tatsächlich #define BME280_SHIFT_BIT_POSITION_BY_14_BITS (14))>> https://github.com/BoschSensortec/BME280_driver/blob/master/bme280.c
Was mal wieder beweist: In jeder großen Firma gibt es Vollidioten, die
man programmieren lässt obwohl sie für diesen Job einfach nicht geeignet
sind.
Mark B. schrieb:> Arc N. schrieb:>> (Formatierung nicht von mir... und BME280_SHIFT_BIT_POSITION_BY_14_BITS>> ist tatsächlich #define BME280_SHIFT_BIT_POSITION_BY_14_BITS (14))>>>> https://github.com/BoschSensortec/BME280_driver/blob/master/bme280.c>> Was mal wieder beweist: In jeder großen Firma gibt es Vollidioten, die> man programmieren lässt obwohl sie für diesen Job einfach nicht geeignet> sind.
Aber das auf Github zu stellen...
p.s. die Sensoren an sich sind wirklich gut und die Gleichungen
funktionieren
p.p.s. das ist nicht aus dem Github-Code, sondern direkt aus dem
Datenblatt, aber: "Please note that it is strongly advised to use the
API available from Bosch Sensortec to perform readout and compensation.
If this is not wanted, the code below can be applied at the user’s
risk."