Hallo Experten, ich verstehe den Unterschied zwischen & und && bzw, | und || nicht wirklich. Ist es nicht egal wie oft ich "UND"-Verknüpfe? Verstehe ich es richtig, dass & identisch ist mit && und eigentlich auch mit &&& etc...? Also der Compiler macht immer das Gleiche draus, aber man schreibt wegen der Lesbarkeit in gutem C-Stil das einfache & bei Bitmanipulationen und das doppelte && z.B. bei If-Abfragen? Über eine Aufklärung wäre ich dankbar, ich suche seit Stunden Fehler... Danke Consti
Constantin K. schrieb: > ich verstehe den Unterschied zwischen & und && bzw, | und || nicht > wirklich. Ist es nicht egal wie oft ich "UND"-Verknüpfe? 1 & 2 == 0; - weil bitweises AND 1 && 2 == 1; - weil beide != 0 > dass & identisch ist mit && > Also der Compiler macht immer das Gleiche draus Keineswegs.
&, | sind Bitweise Verknüpfungen von Variablen / Werten. &&, || ist das Äquivalent in TRUE/FALSE Prüfungen, wie z.B. while, for, if. Damit werden Ausdrücke miteinander Verglichen, und das Ergebnis ist TRUE oder FALSE. if(a && b) ==> a und b müssen 1 (oder grösser, also ungleich 0) sein für TRUE if(a&b) ==> die UND Verknüpfung von a und b muss 1 (oder grösser, also ungleich 0) sein für TRUE
Constantin K. schrieb: > Über eine Aufklärung wäre ich dankbar, ich suche seit Stunden Fehler... Such lieber mal dein C Buch, da stehen solche Dinge nämlich drin! Das gehört zu den Grundlagen.
teste das doch einfach mal: unsigned int a = 0xff & 0x0f; unsigned int b = 0x0a | 0x50; und schau im Debugger, was rauskommt :-)
Einige Videos dazu findest Du hier: http://et-tutorials.de/1236/bedingungen-und-vergleiche/ http://et-tutorials.de/1908/bitweise-manipulation/
Er fragt doch nur ganz offen und ehrlich, schade dass nicht alle Antworten hilfreich waren. Es kann ja schließlich nicht jeder Elektrotechnik studiert haben oder wenigstens Elektroniker sein!! Constantin, bitte poste doch mal deinen Quellcode, dann helfe ich gerne direkt an deinem Code! Was hast Du denn vor? Wird das ein Projekt oder programmierst du zum ersten Mal?
Tom M. schrieb: > Such lieber mal dein C Buch, da stehen solche Dinge nämlich drin! Das > gehört zu den Grundlagen. Und hier darf man keine Grundlagenfragen stellen oder wie?
Die Syntax ist bei den C-Elaboraten ohnehin vernachlässigbar, da der Compiler nach dem Zufallsprinzip meist nicht funktionsfähigen Code erzeugt. C ist immer dann das Mittel zum Zweck, wenn einem Funktion und Ergebnis des Programms egal sind.
Random ... schrieb: > if(a && b) ==> a und b müssen 1 (oder grösser, also ungleich 0) Lass das "1 (oder größer" weg, dann stimts. Denn das Ergebnis darf abhängig vom Datentyp auch negativ (also kleiner 0) sein, damit diese Bedingung wahr ist. Es reicht aus, wenn der Wert in der if-Abfrage ungleich 0 ist. gffdg schrieb: > @egbert > Nur wenn man keine Ahnung hat... Ich sehe das als schrullige, fatalistische Satire an. Nur der Smiley fehlt... P. M. schrieb: > Und hier darf man keine Grundlagenfragen stellen oder wie? Doch, aber man könnte ja auch einfach mal vorher im Forum suchen, ob jemand schon mal die selbe Frage gestellt hat. Oder eines der unzähligen Tutorials im weltweiten Web durcharbeiten. Oder tatsächlich ein Buch kaufen... Für C gilt nach wie vor: K&R Programmieren in C, wobei hier die englische Originalausgabe besser ist als die deutsche Übersetzung... Denn das eigentliche Problem liegt darin, was Constantin K. schrieb: >>>> ich suche seit Stunden Fehler... Du hättest also besser deinen fehlerhaften Code geposted und dann Fragen dazu gestellt. Und auch surfer schrieb: >> Was hast Du denn vor?
P. M. schrieb: > Und hier darf man keine Grundlagenfragen stellen oder wie?
1 | Forum: GCC |
2 | |
3 | Fragen zu den GNU-Toolchains für AVR-, ARM- und MSP430-Mikrocontroller, AVR-GCC, MSPGCC, WinAVR, WinARM, ... |
So steht es in der Berschreibung zu Sinn und Zweck dieses Forums (gcc). Bei Anfängerfragen der Art "was bedeuetet &&" gibt es dan dann halt hilfreiche links zu weiterführenden Informationen (Sprich: C-Buch). Oliver
Es kann nicht der Sinn eines Forums sein, jedem das vorzulesen, was in jedem Buch steht - nur weil manche zu faul sind, selber ein Buch aufzuschlagen oder zu blöd für google sind. Aus jedem halbwegs brauchbaren Werk zu C geht hervor, daß & und && nicht dasselbe sind.
Klaus Wachtler schrieb: > Aus jedem halbwegs brauchbaren Werk zu C geht hervor, daß & und && nicht > dasselbe sind. Anders formuliert: Dinge, die sich als "Werk zu C" begreifen, aus denen das nicht hervorgeht, gehören nach /dev/null.
Klaus, was ist denn der Sinn und Zweck des Forums? Wenn jemand im Job neu ist und eine Frage stellt die für Dich in sich selbstverständlich und Klar ist, gibst Du auch die Antwort "es kann nicht Sinn und Zweck .....?" Constantin hat eine legitime Frage gestellt, eine Frage die wir uns auch mal alle gestellt haben, wenn es auch lange hin ist. Grüsse, René
Rene H. schrieb: > Klaus, > > was ist denn der Sinn und Zweck des Forums? Sicher nicht, dass man jeden nach dem Muster "Ich will, aber bitte nur wenn ihr mir das vorlest" durch absolute Grundlagendinge durchspricht. Es kann natürlich mal vorkommen, dass jemanden ein Detail nicht klar ist, das ist dann kein Problem. Aber wer in einem Matheforum die Frage stellt "stimmt es, dass 2 zu 3 addiert eine 5 ergibt", der ist im Matheforum falsch sondern gehört in die Grundschule. > Wenn jemand im Job neu ist und eine Frage stellt die für Dich in sich > selbstverständlich und Klar ist, gibst Du auch die Antwort "es kann > nicht Sinn und Zweck .....?" Nochmal: es geht nicht um slebstverständlich oder nicht. Wenn jemand in einer Schlosserei anfängt und dann fragt, wie rum er den SChraubendreher halten muss, dann ist die einzig richtige Reaktion nicht die, die Frage zu beantworten, sondern das Dienstverhältnis aufzulösen. > Constantin hat eine legitime Frage gestellt, eine Frage die wir uns auch > mal alle gestellt haben, wenn es auch lange hin ist. Die Frage haben wir uns aber höchstens für 2 Minuten gestellt. Denn solange haben wir gebraucht um im Buch die Beschreibungen der beiden Befehle zu vergleichen. Und gleich nach dem Lesen der Überschriften "binäres UND" versus "Logisches UND" ist uns geschwant, das es da wohl einen Unterschied gibt und das der mit Bitdarstellung bzw. der Darstellung von logischen Größen wie TRUE und FALSE zu tun haben wird. Du kannst ja mal eine Umfrage machen, wieviele der hier anwesenden regelmässigen Antworter (und die dann auch noch richtige und korrekte Antworten geben) ein C Buch gelesen haben und wieviele nicht. Das Ergebnis wird dich überraschen. So gut wie alle haben eines durchgearbeitet (und ein paar haben sich sogar die Sprachdefinition in Form des Standarddokuments reingezogen - trockene Kost). Geht auch nicht anders. Durch anlassbezogenes Zusammenschnorren von Viertelwissen hat noch keiner eine Programmiersprache von Grund auf gelernt. Es hat schon seinen Grund, warum Bücher über Programmiersprachen nicht unter 200 Seiten daherkommen. Und es hat auch seinen Grund warum genau dieselben Bücher bei den meisten Programmierern zerfleddert, mit Anmerkungen versehen, 150 Stellen mit PostIt markiert, mit Textmarker bearbeitet, zumindest die ersten paar Jahre ständig griffbereit neben dem Monitor liegen. Denn wie du so schön sagst: Man kann nicht immer alles, speziell am Anfang, im Kopf parat haben. Dann braucht man eben ein Nachschlagewerk. Und ein besseres Nachschlagewerk als jenes, bei dem du auf die Seite genau weißt, wo die gesuchte Detailinformation steht - sprich DEIN Buch, das du schon mal durchgearbeitet hast - gibt es nicht. (OK, das war mal so. Heute hat Google einige dieser Aufgaben übernommen. Was aber nicht heißt, dass ein Buch nicht trotzdem sinnvoll ist. Denn in einem K&R stehen dann eben auch noch die Detailinformationen dazu, da gibt es Beispiele, Codefetzen, Algorithmen etc)
Karl Heinz Buchegger schrieb: > Es kann natürlich mal vorkommen, dass jemanden ein Detail nicht klar > ist, das ist dann kein Problem. Aber wer in einem Matheforum die Frage > stellt "stimmt es, dass 2 zu 3 addiert eine 5 ergibt", der ist im > Matheforum falsch sondern gehört in die Grundschule. Gleich neben mir sitzt einer der hat Mathematik und theoretische Physik studiert, der würde Dich für diesen Satz zerpflücken ggg Ich gebe Dir ansonsten in allem Recht. Nur finde ich Constatins Frage weit weniger dümmlich wie manche Fragen sonst. Und sie wurde von manchen hier auch anständig beantwortet. Finde ich gut! Grüsse, René
Constantin K. schrieb: > Über eine Aufklärung wäre ich dankbar, ich suche seit Stunden Fehler... Poste mal deinen Code, dann kann dir geholfen werden. Dann kommen auch sinnvolle Antworten.
Rene H. schrieb: > Ich gebe Dir ansonsten in allem Recht. Nur finde ich Constatins Frage > weit weniger wie manche Fragen sonst. Und sie wurde von manchen hier > auch anständig beantwortet. Finde ich gut! Und Konstantin hat sich nicht mehr gemeldet. Das kann bedeuten: - Er wurde so erschlagen von den Antworten, daß er sich nicht mehr traut - er hat es begriffen, findet es aber unnötig Danke zu sagen - er hat es so gut begriffen, daß er jetzt in seinem C Buch liest und alles um sich herum vergisst. :-) @egbert: Der Fehler sitzt in deinem Fall VOR der Tastatur!
> - Er wurde so erschlagen von den Antworten, daß er sich nicht mehr traut Ich tippe einfach mal hierrauf, deshalb ja mein Post. > @egbert: > Der Fehler sitzt in deinem Fall VOR der Tastatur! Dem kann ich nur zustimmen. Ich möchte mal sehen, wie er mir meinen ~800 Zeilen Code für meine automatische Modellbahnhofsteuerung in Assembler umschreibt.
Rene H. schrieb: > Ich gebe Dir ansonsten in allem Recht. Nur finde ich Constatins Frage > weit weniger dümmlich wie manche Fragen sonst. OK, dumm in dem Sinn war die Frage vielleicht nicht. Aus seiner Frage geht klar hervor, dass er der Ansicht ist, dass ein && einfach nur 2 &-Operationen hintereinander sind. Das ist nicht im eigentlichen Sinne 'dumm', sie zeigt nur, dass er nicht verstanden hat, wie Programmiersprachen funktionieren, das es sowas wie Symbole gibt, die durchaus auch mal aus mehr als nur 1 Zeichen bestehen. Ein Äquivalent wäre
1 | i = 5; |
2 | i++; |
3 | |
4 | warum ist i nach dieser Operation nicht 7, da sind ja 2 Additionen? |
Jeder, der auch nur ein bischen Zeit investiert hat um die ersten paar Seiten eines C-Buchs zu lesen, kann diese Frage problemlos und kompetent beantworten. Wenns dann um die Feinheiten geht, wie zb was ist an
1 | i = i++; |
2 | j = i++ * i++; |
eigentlichj falsch und warum ist das falsch bzw. was ist die Begründung dafür, warum das falsch ist, .... kein Problem. Immer her damit, dafür ist ein Forum da. Oder um bei einer Analogie zu bleiben: Wer als Erwachsener, der in einem technischen Bereich arbeiten möchte, eine technische Frage stellt, die jedes Kindergartenkind problemlos korrekt beantworten kann, sollte sich fragen ob er nicht etwas falsch macht. > Und sie wurde von manchen hier auch anständig beantwortet. > Finde ich gut! Ja, so sind wir eben. Trotzdem können wir uns den Hinweis auf ein Buch nicht verkneifen. Genausowenig wie sich dein Physikabsolvent einen derartigen Hinweis nicht verkneifen könnte, wenn zu ihm jemand kommt, der sagt er würde gerne bis zur Relativitätstheorie vorstossen, aber wie war das gleich nochmal mit dem 1. Newton und was bedeutet eigentlich das '*' in F=m*a
Es gibt halt Menschen, die fragen lieber andere Menschen, anstatt ein Buch zu lesen oder zu googlen. Liegt wohl in der kommunikativ-sozialen Natur des Menschen. Sowie es auch Menschen gibt, die dann auch noch einen solch überflüssigen Kommentar dazu schreiben, wie diesen hier ;)
Dosmo schrieb: > Es gibt halt Menschen, die fragen lieber andere Menschen, anstatt ein > Buch zu lesen oder zu googlen. Liegt wohl in der kommunikativ-sozialen > Natur des Menschen. Nein, das liegt definitv an ihrer Faulheit. Mit "kommunikativ-sozial" hat das überhaupt nichts zu tun. Denn wären sie es, würden sie erstmal versuchen, eine gemeinsame Ebene mit ihren Gesprächspartnern anzustreben, bevor sie eine Diskussion beginnen.
Wenn man nicht weiß, was es mit & und && und &&& auf sich hat, und dann hier landet: Constantin K. schrieb: > ich suche seit Stunden Fehler... ... und dann immer noch nicht auf die Idee kommt, freiwillig etwas zu C zu lesen, ist vielleicht sogar der Hinweis auf ein Buch überflüssig. Das kann ich mir nicht mit Kommunikationsfreude erklären.
egbert schrieb: > Die Syntax ist bei den C-Elaboraten ohnehin vernachlässigbar, da der > Compiler nach dem Zufallsprinzip meist nicht funktionsfähigen Code > erzeugt. > > C ist immer dann das Mittel zum Zweck, wenn einem Funktion und Ergebnis > des Programms egal sind. ROFL ... welchem Jahrhundert entstammst du denn?
Ritchies Kerni schrieb: > ROFL ... welchem Jahrhundert entstammst du denn? Egbert hat sich (nicht nur in diesem Beitrag) einfach nur als ausgewachsener C-Hasser zu erkennen gegeben. Von irgendeiner Art von Ahnung (wenn man von "keine Ahnung" absieht ;-) zeugt das natürlich nicht, keine Frage.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.