Hilfe zu der C-Syntax
Moderatoren: Moderatoren, Redakteure
- Mr.Chips
- Beiträge: 4936
- Registriert: 02.09.2007 12:18
- Persönliche Nachricht:
Hilfe zu der C-Syntax
Heute haben wir die Grundlagen der C-Syntax durchgenommen, hab es aber nicht wirklich kapiert.
Zu allem Überfluss haben wir auch noch eine Hausaufgabe aufbekommen, wo wir a, b, und c ausrechnen sollen:
a= 5;
b= 10;
c= 15;
b- = c++;
a* = b;
c+ = --b;
a% = 5;
b- = a++ + --c;
c- = 6;
a= (a+ --b) * (3+ c++);
könnt ihr mir dabei helfen und evtl noch die ein oder andere erklärung geben? (besonders die Inkrement und Dekrement- Operatoren mögen mich nich so)
Zu allem Überfluss haben wir auch noch eine Hausaufgabe aufbekommen, wo wir a, b, und c ausrechnen sollen:
a= 5;
b= 10;
c= 15;
b- = c++;
a* = b;
c+ = --b;
a% = 5;
b- = a++ + --c;
c- = 6;
a= (a+ --b) * (3+ c++);
könnt ihr mir dabei helfen und evtl noch die ein oder andere erklärung geben? (besonders die Inkrement und Dekrement- Operatoren mögen mich nich so)
- Levi
- Beiträge: 44988
- Registriert: 18.03.2009 15:38
- Persönliche Nachricht:
Re: Hilfe zu der C-Syntax
einmal bitte: WTF! ... sone syntax benutzt man nur, wenn man seine mitarbeiter ärgern will Oo ...Mr.Chips hat geschrieben:Heute haben wir die Grundlagen der C-Syntax durchgenommen, hab es aber nicht wirklich kapiert.
Zu allem Überfluss haben wir auch noch eine Hausaufgabe aufbekommen, wo wir a, b, und c ausrechnen sollen:
a= 5;
b= 10;
c= 15;
b- = c++;
a* = b;
c+ = --b;
a% = 5;
b- = a++ + --c;
c- = 6;
a= (a+ --b) * (3+ c++);
könnt ihr mir dabei helfen und evtl noch die ein oder andere erklärung geben? (besonders die Inkrement und Dekrement- Operatoren mögen mich nich so)
vor allem sind mir diese notationen:
b-
A*
c+
a%
komplett fremd Oo ...
--a <-- a -1 ... und dann verwenden
a++ <--- a verwenden, und danach +1 rechnen ...
a% ... könnte modulo sein ... aber ergibt auf der linken seite, irgendwie keinen sinn oO?
oder moment ...
kann es sein, dass es eigentlich:
b -= c++;
a *= b;
c += --b;
a %= 5;
heißen müsste?
- Mr.Chips
- Beiträge: 4936
- Registriert: 02.09.2007 12:18
- Persönliche Nachricht:
Re: Hilfe zu der C-Syntax
wenn ich jetzt deine erklärung mit der von meiner lehrerin vermische, macht es irgendwie sinn-Levi- hat geschrieben:einmal bitte: WTF! ... sone syntax benutzt man nur, wenn man seine mitarbeiter ärgern will Oo ...Mr.Chips hat geschrieben:Heute haben wir die Grundlagen der C-Syntax durchgenommen, hab es aber nicht wirklich kapiert.
Zu allem Überfluss haben wir auch noch eine Hausaufgabe aufbekommen, wo wir a, b, und c ausrechnen sollen:
a= 5;
b= 10;
c= 15;
b- = c++;
a* = b;
c+ = --b;
a% = 5;
b- = a++ + --c;
c- = 6;
a= (a+ --b) * (3+ c++);
könnt ihr mir dabei helfen und evtl noch die ein oder andere erklärung geben? (besonders die Inkrement und Dekrement- Operatoren mögen mich nich so)
vor allem sind mir diese notationen:
b-
A*
c+
a%
komplett fremd Oo ...
--a <-- a -1 ... und dann verwenden
a++ <--- a verwenden, und danach +1 rechnen ...
a% ... könnte modulo sein ... aber ergibt auf der linken seite, irgendwie keinen sinn oO?

ja, a% soll modulo sein

müsste^^oder moment ...
kann es sein, dass es eigentlich:
b -= c++;
a *= b;
c += --b;
a %= 5;
heißen müsste?
aber ich hab das so von der tafel abgeschrieben, da hab ich nicht auf die leerzeichen geachtet
übrigens hab ich es einfach mal versucht: am ende kommt für:
a= -56
b= -14 und für
c= 4 raus
denk aber nich dass das richtig is...

- Levi
- Beiträge: 44988
- Registriert: 18.03.2009 15:38
- Persönliche Nachricht:
Re: Hilfe zu der C-Syntax
a= 5;
b= 10;
c= 15;
b -= c++; ... b=b-c ... macht = b=-5 c+1 -> c=16
a *= b; a= a*b ...macht -> a=-25
c += --b; .. b-1 -> b=-6 ... c=c+b ... 16-6 -> c=10
a %= 5; a= a%5 ... -25/5=5 rest 0 ... -> a=0
b -= a++ + --c; .... c=c-1 c-> 9 ... a+c = 9 ... b = b-9 -> b= -15 ... a=a+1 ... -> a=1
c -= 6; c = c-6 ... c -> 3
a=1
b=-15
c=3
a = (a+ --b) * (3+ c++);
--b --> b=-16
a-16 -> -15
a=-15*(3+3)
a=-135
c++
c=4 ...
also irgendwo hab entweder ich mich, oder du dich verrechnet
PS: lehrer haben meine "randnotizen" gehasst
...
PPS: am besten, man tippt es einfach in c ein ... und denk an die falschen leerzeichen
b= 10;
c= 15;
b -= c++; ... b=b-c ... macht = b=-5 c+1 -> c=16
a *= b; a= a*b ...macht -> a=-25
c += --b; .. b-1 -> b=-6 ... c=c+b ... 16-6 -> c=10
a %= 5; a= a%5 ... -25/5=5 rest 0 ... -> a=0
b -= a++ + --c; .... c=c-1 c-> 9 ... a+c = 9 ... b = b-9 -> b= -15 ... a=a+1 ... -> a=1
c -= 6; c = c-6 ... c -> 3
a=1
b=-15
c=3
a = (a+ --b) * (3+ c++);
--b --> b=-16
a-16 -> -15
a=-15*(3+3)
a=-135
c++
c=4 ...
also irgendwo hab entweder ich mich, oder du dich verrechnet

PS: lehrer haben meine "randnotizen" gehasst

PPS: am besten, man tippt es einfach in c ein ... und denk an die falschen leerzeichen

- Scorcher24_
- Beiträge: 15527
- Registriert: 11.11.2004 14:31
- Persönliche Nachricht:
Jetzt weiss ich wieder warum C lange Zeit als unwartbarer Code galt 
Behold the beauty of C++:
Hatte ich grad im Zwischenspeicher...
Und sorry für OT.
rya.

Behold the beauty of C++:
Code: Alles auswählen
void NLApplication::run()
{
m_window = new NLWindow(NLWindowSettings());
m_window->connectSignal(NLBindKeySlot(NLApplication, onKey));
m_window->connectSignal(NLBindRenderSlot(NLApplication, onRender));
m_window->connectSignal(NLBindQuitSlot(NLApplication, onQuit));
m_window->connectSignal(NLBindMouseSlot(NLApplication, onMouseMove));
m_quad = NLQuad(NLVector2f(250,200), NLVector2f(100, 100),
NLVector2f(125,100), NULL);
m_quad2 = m_quad;
m_quad2.move(200,200);
m_quad2.setZOrder(-0.2f);
NLColor4f bgcolor(0.0f, 0.0f, 0.8f, 1.0f);
m_window->setClearColor(bgcolor);
m_handle = m_texLoader.loadTexture("./data/textures/layingrock.tga");
if ( m_handle )
{
m_log->printToLog(LL_MESSAGE, "Texture sucessfully loaded.");
}
m_handle->attachTexture();
m_window->enterLoop();
}

rya.
-
- Beiträge: 918
- Registriert: 10.07.2004 18:20
- Persönliche Nachricht:
-
- Beiträge: 238
- Registriert: 02.12.2008 11:10
- Persönliche Nachricht:
Re: Hilfe zu der C-Syntax
Je nachdem wo das ++ oder das -- steht wird die Operation zuerst oder erst am Ende der Anweisung auf die Variable an der das ++ oder -- steht ausgeführt.
+= -= *= /= %= heisst, dass die Variable vor dem Operator die Operation vor dem = mit dem Ergebnis hinter dem Operator ausführt
a+=b --> a=a+b
a+=b+12 --> a+(b+12)
a=5 b=10 c=15
b -= c++ -> b=b-c = b=-5 (10-15) sowie danach c=16 (15+1)
a *= b -> a=a*b = a=-25 (5*-5)
c += --b --> b=-6 (-5-1) c=10
a %= 5 --> a=0 (Rest von -25 / 5)
b -= a++ + --c --> c=9 (10-1) b=-15 -5-(0+10) a=1 (0+1)
c -= 6 --> c=3 (9-6)
a = (a+ --b) * (3+ c++) --> b=-16 (15-1) a=-90 ((1 + -16)*(3 + 3)) c=4 (3+1)
Am Ende hast du dann:
a = -90
b = -16
c = 4
Habs mal unter Windows im gcc (MinGW) compiliert (mit korrigierten Zuweisungen)
Code:
und bekomme auch
a = -90
b = -16
c = 4
Mit Ausgabe der Zwischenergebnisse siehts so aus
// Anfangswerte
a = 5
b = 10
c = 15
b -= c++
a = 5
b = -5
c = 16
a *= b
a = -25
b = -5
c = 16
c += --b
a = -25
b = -6
c = 10
a %= 5a = 0
b = -6
c = 10
b -= a++ + --c
a = 1
b = -15
c = 9
c -= 6
a = 1
b = -15
c = 3
a = (a+ --b) * (3+ c++)
a = -90
b = -16
c = 4
Edit: Nen rechenfehler von mir entdeckt. Jetzt deckt sich auch mein Kopfrechenergebnis mit dem Compilerergebnis.
@-levi-: Du hast den gleichen Rechenfehler -15*(3+3) ist -90 und nicht -135. Du hast im Kopf wahrscheinlich wie ich 3*3 gerechnet und das dann mal -15 genommen ^^.
+= -= *= /= %= heisst, dass die Variable vor dem Operator die Operation vor dem = mit dem Ergebnis hinter dem Operator ausführt
a+=b --> a=a+b
a+=b+12 --> a+(b+12)
So ich versuch mich auch mal dran (mache die neuen Werte der Variablen immer fett)Mr.Chips hat geschrieben: a= 5;
b= 10;
c= 15;
b- = c++;
a* = b;
c+ = --b;
a% = 5;
b- = a++ + --c;
c- = 6;
a= (a+ --b) * (3+ c++);
a=5 b=10 c=15
b -= c++ -> b=b-c = b=-5 (10-15) sowie danach c=16 (15+1)
a *= b -> a=a*b = a=-25 (5*-5)
c += --b --> b=-6 (-5-1) c=10
a %= 5 --> a=0 (Rest von -25 / 5)
b -= a++ + --c --> c=9 (10-1) b=-15 -5-(0+10) a=1 (0+1)
c -= 6 --> c=3 (9-6)
a = (a+ --b) * (3+ c++) --> b=-16 (15-1) a=-90 ((1 + -16)*(3 + 3)) c=4 (3+1)
Am Ende hast du dann:
a = -90
b = -16
c = 4
Habs mal unter Windows im gcc (MinGW) compiliert (mit korrigierten Zuweisungen)
Code:
Code: Alles auswählen
#include <stdio.h>
int main() {
int a = 5;
int b = 10;
int c = 15;
b -= c++;
a *= b;
c += --b;
a %= 5;
b -= a++ + --c;
c -= 6;
a = (a+ --b) * (3+ c++);
printf("a = %d\n",a);
printf("b = %d\n",b);
printf("c = %d\n",c);
return 0;
}
und bekomme auch
a = -90
b = -16
c = 4
Mit Ausgabe der Zwischenergebnisse siehts so aus
// Anfangswerte
a = 5
b = 10
c = 15
b -= c++
a = 5
b = -5
c = 16
a *= b
a = -25
b = -5
c = 16
c += --b
a = -25
b = -6
c = 10
a %= 5a = 0
b = -6
c = 10
b -= a++ + --c
a = 1
b = -15
c = 9
c -= 6
a = 1
b = -15
c = 3
a = (a+ --b) * (3+ c++)
a = -90
b = -16
c = 4
Edit: Nen rechenfehler von mir entdeckt. Jetzt deckt sich auch mein Kopfrechenergebnis mit dem Compilerergebnis.
@-levi-: Du hast den gleichen Rechenfehler -15*(3+3) ist -90 und nicht -135. Du hast im Kopf wahrscheinlich wie ich 3*3 gerechnet und das dann mal -15 genommen ^^.
-
- Beiträge: 489
- Registriert: 29.06.2009 10:16
- Persönliche Nachricht:
das geht noch viel lustiger wenn man sowas mit Assembler machen muss 
und ich meine oldschool nich mim C-Compiler und ner schicken Entwicklungsumgebung
Deine Lehrerin übrigens sollte sich vielleicht doch mal Übungsaufgaben ausdenken die ansatzweise ne sinnvolle Anwendung haben, mMn das ganze am besten gleich in objektorientierter Kombination(das hilft immens beim Verstehen)
anstatt Übungsaufgaben aus irgendner schlechten Schul Literatur abzuschreiben, Programmieren lernen kann sehr viel Spass machen wenn man mit sinnvollen Übungen eingeführt wird.
Vielleicht auch mal mit Java beginnen , da ises auch gleich leichter sich mit Oberflächen auseinanderzusetzen , was widerum Spass fördernder ist wenn man Basics behandelt, da man nicht auf ner Konsole sondern in nem Fenster Ausgaben macht, die zusätzliche Code Menge ist relativ gering und man lernt nebenbei noch ein bisschen was über Fenster Komponenten.
C++ empfehl ich ohnehin nich als Einsteiger Sprache , freu dich schon mal auf Pointer :p
gut in dem beispiel hier gehts wohl um den Umgang mit Operatoren
allerdings wundert mich das man so ne Übungsaufgabe gibt wo ein Anfänger ziemlich überfordert sein dürfte wenns zum Part des Verstehens kommt , sowas ist eher Folgestunde um das Verstandene zu vertiefen
http://www.a-sichau.de
die Seite meines alten Informatik Lehrers
@Levi , meine Lehrer haben noch wesentlich mehr gehasst als meine Randnotizen :p

und ich meine oldschool nich mim C-Compiler und ner schicken Entwicklungsumgebung
Deine Lehrerin übrigens sollte sich vielleicht doch mal Übungsaufgaben ausdenken die ansatzweise ne sinnvolle Anwendung haben, mMn das ganze am besten gleich in objektorientierter Kombination(das hilft immens beim Verstehen)
anstatt Übungsaufgaben aus irgendner schlechten Schul Literatur abzuschreiben, Programmieren lernen kann sehr viel Spass machen wenn man mit sinnvollen Übungen eingeführt wird.
Vielleicht auch mal mit Java beginnen , da ises auch gleich leichter sich mit Oberflächen auseinanderzusetzen , was widerum Spass fördernder ist wenn man Basics behandelt, da man nicht auf ner Konsole sondern in nem Fenster Ausgaben macht, die zusätzliche Code Menge ist relativ gering und man lernt nebenbei noch ein bisschen was über Fenster Komponenten.
C++ empfehl ich ohnehin nich als Einsteiger Sprache , freu dich schon mal auf Pointer :p
gut in dem beispiel hier gehts wohl um den Umgang mit Operatoren
allerdings wundert mich das man so ne Übungsaufgabe gibt wo ein Anfänger ziemlich überfordert sein dürfte wenns zum Part des Verstehens kommt , sowas ist eher Folgestunde um das Verstandene zu vertiefen
http://www.a-sichau.de
die Seite meines alten Informatik Lehrers
@Levi , meine Lehrer haben noch wesentlich mehr gehasst als meine Randnotizen :p
- Levi
- Beiträge: 44988
- Registriert: 18.03.2009 15:38
- Persönliche Nachricht:
Re: Hilfe zu der C-Syntax
:wink: ... manch mal sinds die einfachsten sachen, an denen man scheitertAron_dc hat geschrieben: @-levi-: Du hast den gleichen Rechenfehler -15*(3+3) ist -90 und nicht -135. Du hast im Kopf wahrscheinlich wie ich 3*3 gerechnet und das dann mal -15 genommen ^^.

verdammt ... da sieht man mal, wo einen kopfrechnung hinbringt

-
- Beiträge: 238
- Registriert: 02.12.2008 11:10
- Persönliche Nachricht:
Naja bin der Meinung, dass man Leute die Programmiersprachen lernen wollen immer nur in sinnvollen Häppchen lehren sollte. Zum verständnis der Operatoren, ist die Aufgabe da oben völlig in Ordnung. Vielleicht etwas sehr komplex, aber wenn man das durch hat, hat mans denke ich auch verstanden.
Auf welcher Sprache man Programmieren lernt ist ihmo völlig wurscht, solangs nur (erstmal) ne Hochsprache ist (einfach der besseren verständlichkeit wegen), denn im Endeffekt sind die grundlegenden Elemente und ihre Anwendungen bei vielen Sprachen (nahezu) identisch.
Auf welcher Sprache man Programmieren lernt ist ihmo völlig wurscht, solangs nur (erstmal) ne Hochsprache ist (einfach der besseren verständlichkeit wegen), denn im Endeffekt sind die grundlegenden Elemente und ihre Anwendungen bei vielen Sprachen (nahezu) identisch.
- Mr.Chips
- Beiträge: 4936
- Registriert: 02.09.2007 12:18
- Persönliche Nachricht:
mit prgrammieren komm ich gar nicht mehr klar...
jetzt haben wir mit if und else angefangen und ich raff gaar nix mehr
zum beispiel diese aufgabe:
Es ist ein programm zu erstellen, mit dem man den Bruttoarbeitslohn für einen mitarbeiter berechnen kann. für diese berechnung des bruttolohnes bei überstunden gilt folgende Regelung: Solange die überstunden bis zu 10% der monatlichen sollstunden betragen, wird dem mitarbeiter für jede überstunde ein überstundenzuschlag von 25% seines stundenlohnes zusätzlich vergütet. übersteigen die überstunden die 10% grenze, so soll dem Mitarbeiter für jede überstunde ein zuschlag von 30% gezahlt werden. einzugebene daten sind die monatssollstunden, die Iststunden und der Stundenlohn
ich hatte zwar ein paar gute ansätze bei der aufgabe aber irgendwann haben die mich auch nich mehr weitergebracht -.-
jetzt haben wir mit if und else angefangen und ich raff gaar nix mehr
zum beispiel diese aufgabe:
Es ist ein programm zu erstellen, mit dem man den Bruttoarbeitslohn für einen mitarbeiter berechnen kann. für diese berechnung des bruttolohnes bei überstunden gilt folgende Regelung: Solange die überstunden bis zu 10% der monatlichen sollstunden betragen, wird dem mitarbeiter für jede überstunde ein überstundenzuschlag von 25% seines stundenlohnes zusätzlich vergütet. übersteigen die überstunden die 10% grenze, so soll dem Mitarbeiter für jede überstunde ein zuschlag von 30% gezahlt werden. einzugebene daten sind die monatssollstunden, die Iststunden und der Stundenlohn
ich hatte zwar ein paar gute ansätze bei der aufgabe aber irgendwann haben die mich auch nich mehr weitergebracht -.-
- Scorcher24_
- Beiträge: 15527
- Registriert: 11.11.2004 14:31
- Persönliche Nachricht:
Was ist an if...else schwer?Mr.Chips hat geschrieben:mit prgrammieren komm ich gar nicht mehr klar...
jetzt haben wir mit if und else angefangen und ich raff gaar nix mehr
zum beispiel diese aufgabe:
Es ist ein programm zu erstellen, mit dem man den Bruttoarbeitslohn für einen mitarbeiter berechnen kann. für diese berechnung des bruttolohnes bei überstunden gilt folgende Regelung: Solange die überstunden bis zu 10% der monatlichen sollstunden betragen, wird dem mitarbeiter für jede überstunde ein überstundenzuschlag von 25% seines stundenlohnes zusätzlich vergütet. übersteigen die überstunden die 10% grenze, so soll dem Mitarbeiter für jede überstunde ein zuschlag von 30% gezahlt werden. einzugebene daten sind die monatssollstunden, die Iststunden und der Stundenlohn
ich hatte zwar ein paar gute ansätze bei der aufgabe aber irgendwann haben die mich auch nich mehr weitergebracht -.-
Code: Alles auswählen
if ( a == b )
{
}
In deinem Fall also:
Code: Alles auswählen
// Berechnet die Überstunden in prozent, parameter stunden sind die stunden die geleistet wurden
unsigned int getUeberstunden(const unsigned int sollstunden, const unsigned int stunden)
{
if ( stunden > sollstunden )
{
int prozent = ((stunden*100) / sollstunden) - 100;
return prozent;
}
return 0;
}
// Berechnet den Zuschlag auf basis der überstunden und des stundenlohnes
float berechneZuschlag(const unsigned int percent, const unsigned int stundenlohn)
{
if ( percent >= 10 )
{
return(float) (( stundenlohn / 100.0f ) * 25.0f);
}
else if ( percent >= 25 )
{
return (float)((stundenlohn / 100.0f ) * 30.0f);
}
}
Das eigentliche Problem in viele kleine aufteilen und diese Probleme nach und nach lösen. Mehr werde ich Dir nicht schreiben, eigentlich ist damit deine Aufgabe bereits gelöst, aber ein lauffähiges Programm musst Du selbst draus machen. Ich habs jetzt nicht kompiliert, der Code ist hier fix zusammengehackt, aber er sollte funktionieren.
rya.
-
- Beiträge: 238
- Registriert: 02.12.2008 11:10
- Persönliche Nachricht:
Ich werde dir auch kein Programm schreiben, da ich denke, dass man am besten lernt, wenn man die Werkzeuge bekommt und damit rumprobiert.
Das Wichtige ist, dass du die von Scorcher24 genannte Methodik zum Zerlegen der Probleme beherrschst und lernst, was du mit den Werkzeugen die dir zur Verfügung stehen eigentlich tun kannst.
Mit Werkzeugen meine ich in deinem Fall die verschiedenen Befehle, Schleifen, Verzweigungen.
Ein if funktioniert im Grundlegenden folgendermaßen:
Der else { ... } Teil ist dabei optional.
Eine Bedingung kann dabei verschiedene Formen haben. In C wird meines Wissens nach alles was nicht den Wert 0 hat als wahr angenommen.
gültige Bedingungen sind also zum Beispiel:
Wenn du nun also deine if(Bedingung) hast, wird das was in den ersten geschweiften Klammern steht ausgeführt, wenn die Bedingung vom if einen wahren Wert hat.
Wenn du einen else Teil an die "}" schreibst wird dieser ausgeführt, wenn die Bedingung eben nicht zutrifft.
So kannst du bestimmte Programmteile nur ausführen lassen, wenn bestimmte Bedinungen gegeben sind.
[Achtung: Ich plädiere hier nicht auf 100%ige Richtigkeit, wenn ich etwas falsch erzählt habe, korrigiert mich einfach]
Das Wichtige ist, dass du die von Scorcher24 genannte Methodik zum Zerlegen der Probleme beherrschst und lernst, was du mit den Werkzeugen die dir zur Verfügung stehen eigentlich tun kannst.
Mit Werkzeugen meine ich in deinem Fall die verschiedenen Befehle, Schleifen, Verzweigungen.
Ein if funktioniert im Grundlegenden folgendermaßen:
Code: Alles auswählen
if(Bedingung)
{
... Befehle
}
else
{
... Befehle
}
Eine Bedingung kann dabei verschiedene Formen haben. In C wird meines Wissens nach alles was nicht den Wert 0 hat als wahr angenommen.
gültige Bedingungen sind also zum Beispiel:
- 5 - ist eine Zahl, Zahlen werden als wahr gewertet wenn sie != 0 sind
- Variablen - Dabei wird geguckt, was in der Variable gespeichert ist. Ist der Wert der Variablen != 0 ist die Bedingung erfüllt
- Vergleiche wie z.b. Variable1==Variable2 oder Variable1>Variable2 - diese sind dann wahr, wenn eben der vergleich stimmt
Wenn du nun also deine if(Bedingung) hast, wird das was in den ersten geschweiften Klammern steht ausgeführt, wenn die Bedingung vom if einen wahren Wert hat.
Wenn du einen else Teil an die "}" schreibst wird dieser ausgeführt, wenn die Bedingung eben nicht zutrifft.
So kannst du bestimmte Programmteile nur ausführen lassen, wenn bestimmte Bedinungen gegeben sind.
[Achtung: Ich plädiere hier nicht auf 100%ige Richtigkeit, wenn ich etwas falsch erzählt habe, korrigiert mich einfach]
- Levi
- Beiträge: 44988
- Registriert: 18.03.2009 15:38
- Persönliche Nachricht:
Aron_dc hat geschrieben: gültige Bedingungen sind also zum Beispiel:
- 5 - ist eine Zahl, Zahlen werden als wahr gewertet wenn sie != 0 sind
- Variablen - Dabei wird geguckt, was in der Variable gespeichert ist. Ist der Wert der Variablen != 0 ist die Bedingung erfüllt
- Vergleiche wie z.b. Variable1==Variable2 oder Variable1>Variable2 - diese sind dann wahr, wenn eben der vergleich stimmt
[....]
[Achtung: Ich plädiere hier nicht auf 100%ige Richtigkeit, wenn ich etwas falsch erzählt habe, korrigiert mich einfach]
gerade deswegen möchte ich mal einschreiten:
bis auf ausnahmen (boolsche Variablen) .. sollte man aufgrund der Verständlichkeit darauf verzichten, ohne Vergleiche zu arbeiten!
also immer schon mit == <= >= != ... arbeiten! ...
(nicht jede Sprache verhält sich bei anderen Datentypen als bool gleich.)
- Scorcher24_
- Beiträge: 15527
- Registriert: 11.11.2004 14:31
- Persönliche Nachricht:
-Levi- hat geschrieben:Aron_dc hat geschrieben: gültige Bedingungen sind also zum Beispiel:
- 5 - ist eine Zahl, Zahlen werden als wahr gewertet wenn sie != 0 sind
- Variablen - Dabei wird geguckt, was in der Variable gespeichert ist. Ist der Wert der Variablen != 0 ist die Bedingung erfüllt
- Vergleiche wie z.b. Variable1==Variable2 oder Variable1>Variable2 - diese sind dann wahr, wenn eben der vergleich stimmt
[....]
[Achtung: Ich plädiere hier nicht auf 100%ige Richtigkeit, wenn ich etwas falsch erzählt habe, korrigiert mich einfach]
gerade deswegen möchte ich mal einschreiten:
bis auf ausnahmen (boolsche Variablen) .. sollte man aufgrund der Verständlichkeit darauf verzichten, ohne Vergleiche zu arbeiten!
also immer schon mit == <= >= != ... arbeiten! ...
(nicht jede Sprache verhält sich bei anderen Datentypen als bool gleich.)
Genaugenommen kennt C-98 kein bool. Diesen Datentyp gibt es nur in C++.
BOOL ist in C nur:
Code: Alles auswählen
typedef unsigned int BOOL;
#define TRUE 1
#define FALSE 0
// oder auch gerne genommen:
enum BOOL
{
FALSE = 0,
TRUE,
};
Aber ich möchte deine Aussage unterstreichen: Immer mit den Operatoren arbeiten. Denn spätestens in C++ kann die Abfrage ob ein Zeiger NULL ist ohne "== NULL" dazu führen, dass es Zugriffsfehler gibt, wenn diese Klasse den operator bool() definiert.
rya.