Zitat von
sl33py
if(i=0;i<10;i++)
[...]
So weit ist das jetzt auch noch verständlich für mich, sollte die Werte wahr sein, wird weiterer Code ausgeführt.
Also wie dir da was verständlich sein kann leuchtet mir nicht ein.
In if kommen keine Klammern vor, da diese eine Sequenz abschließen; was bei if nicht der Fall ist und somit syntaktisch falsch ist.
Zum Thema Wahrheitswerte: allein schon bei i=0 kann das ja wohl nicht stimmen. Der IstGleich-Operator gibt den Wert des Ausdrucks zu seiner Rechten zurück. Bei i=0 ist das 0. C kennt keine echten Booleans (C++ schon - bool - aber die Interpretation von Integern als Wahrheitswerte ist äquivalent). C betrachtet alles als falsch, was gleich null ist und alles als wahr was ungleich null ist.
Lange Rede kurzer Sinn: i=0 als Wahrheitswert ist immer falsch (oder "false" um im C++ Terminus zu sprechen).
@Hu5eL
Weder C, noch C++ kennen ein "elseif", wie beispielsweise PHP es tut. Sie kennen jedoch beide ein "else" und ein "if".
Da if und ein dazugehöriges else eine Sequenz darstellen und Klammern Sequenzen zusammenfassen und darum in der Regel (z.B. auch bei Schleifen, nicht jedoch bei Funktionen oÄ.) weggelassen werden können, kann man ein "elseif" durch ein "else" und ein "if" nachbauen.
Somit lässt sich
Code:
if (a)
{
// mach was #1
}
else
{
if (b)
{
// mach was #2
}
else
{
// mach was #3
}
}
zu
Code:
if (a)
{
// mach was #1
}
else if (b)
{
// mach was #2
}
else
{
// mach was #3
}
machen, indem man den Block ( { } ) vom ersten else weglässt und gleich ein if anfügt, welches zusammen mit dem zugehörigen Block des if- und des else-Teils als eine Sequenz betrachtet wird.
Das Ganze habe ich nochmal farbig hervorgehoben um eindeutig zu machen, was zu was gehört.
______________________
Da der Rest des Gespräches wohl nur noch als Buchempfehlung zu laufen scheint verweise ich hiermit auf den Sticky in dieser Section.
/closed
/auf Anfrage wieder geöffnet @ 18:05; 21.01.2010