Frage zu C Syntax

Gast #2687221
Lesenswert?

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
Persönliche Seite #2687242
Lesenswert?

&, | 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
Gast #2688023
Lesenswert?

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?
Gast #2688051
Lesenswert?

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.
Moderator (Firma: Titel) Persönliche Seite #2688102
Lesenswert?

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?
Gast #2688196
Lesenswert?

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
#2688202
Lesenswert?

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.
Gast #2688211
Lesenswert?

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é
#2688245
Lesenswert?

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)
Gast #2688250
Lesenswert?

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é
#2688256
Lesenswert?

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!
Persönliche Seite #2688262
Lesenswert?

> - 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.
#2688275
Lesenswert?

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
Gast #2688600
Lesenswert?

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 ;)
Moderator Persönliche Seite #2688624
Lesenswert?

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.
Gast #2696029
Lesenswert?

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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren