Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » if (!i){

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
18.01.2007, 21:40 Uhr
Pablo
Supertux
(Operator)



Zitat von Blubber2063:
also 0 = false und > 0 ist true.


genauer gesagt ist 0 'falsch' und alles ungleich 0 'wahr'.

Der Rumpf der If Anweisung wird dann ausgeführt, wenn die Bedingung in der if Anweisung ungleich 0 ist. Wenn i als Variable ungleich 0 ist, dann ist sie wauch 'wahr'.

D.h. !i ist die Negation von i. Wenn i gleich 0 ist, dann ist !i etwas ungleich 0 (die meisten Compiler machen daraus eine 1), und wenn i ungleich 0 ist, dann ist !i gleich 0.

@XHatebreedX: ein x==3 liefert einen Wert gleich 0, wenn die Bedingung falsch ist, sonst etwas ungleich 0. Deswegen braucht man im Prinzip das ==, !=, <, >, <=, >= nicht, wenn man nur true/false testen will.


C++:

if(0)
{
  /* das wird nie ausgeführt */
}

if(3)
{
    /* das wird immer ausgeführt */
}

if(x)
{
   /* das wird ausgeführt, wenn x ungleich 0 ist */
}

if(y < z)
{
  /* das wird ausgeführt, wenn der Vergleichsoperator einen Wert ungleich 0
      liefert, sprich, wenn die Bedingung y < z erfüllt ist */

}

usw...


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 18.01.2007 um 21:44 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
19.01.2007, 08:42 Uhr
ao

(Operator)



Zitat von Pablo:
Wenn i gleich 0 ist, dann ist !i etwas ungleich 0 (die meisten Compiler machen daraus eine 1)

... zumindest, wenn sie was auf sich halten. Es ist im Standard festgelegt, dass (!false) den numerischen Wert 1 hat. Jeder Compiler, der behauptet, !false wäre 2, 3, -1 oder irgendwas anderes, ist nicht standardkonform.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
19.01.2007, 13:25 Uhr
Pablo
Supertux
(Operator)



Zitat von ao:
Es ist im Standard festgelegt, dass (!false) den numerischen Wert 1 hat.


ich dachte, dass das nicht im Standard definiert war, oder ist das auf C++ bezogen? , denn in C gibt es weder 'false' noch 'true'
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 19.01.2007 um 18:24 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
19.01.2007, 20:13 Uhr
ao

(Operator)


Oh ja. Das gilt für C++. Was mit C99 ist, weiß ich nicht - ist das schon so lange her, dass ich in C programmiert habe

Aber auch in C89 haben logische Ausdrücke, die wahr sind - z.B. (0 != 1), den Wert numerischen Wert 1.

ao

Dieser Post wurde am 19.01.2007 um 20:14 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
19.01.2007, 23:05 Uhr
Pablo
Supertux
(Operator)


Wo ist unser Standardbuch, wenn wir es brauchen virtual, wo steckst du


Zitat:

Aber auch in C89 haben logische Ausdrücke, die wahr sind - z.B. (0 != 1), den Wert numerischen Wert 1.



ich frage mich, ob 0 != 1 laut C98/C99 wirklich 1 ist oder auch etwas ungleich 0 sein kann. Ich meine, ich habe irgendwo gelesen, dass das nicht standarisiert ist, das weiß ich aber nicht
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 19.01.2007 um 23:05 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
19.01.2007, 23:23 Uhr
0xdeadbeef
Gott
(Operator)


C99 kennt einen Typ _Bool, der 0 und 1 halten kann. Klausel 6.3.1.2 sagt:

Zitat von ISO-C99 6.3.1.2:

When any scalar value is converted to _Bool, the result is 0 if the value compares equal to 0; otherwise, the result is 1.


also ja, true ist 1.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
20.01.2007, 03:03 Uhr
~as98d
Gast


Bis jetzt hab ich hier nur über 0 und 1 gelesen.
Aber was ist eigentlich mit -1, also negativen Zahlen, sollten die nicht genauso wie 0 auch false ergeben?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
20.01.2007, 08:47 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat von ~as98d:
Bis jetzt hab ich hier nur über 0 und 1 gelesen.
Aber was ist eigentlich mit -1, also negativen Zahlen, sollten die nicht genauso wie 0 auch false ergeben?


Nein.
Steht aber schon oben:

Umwandlung von typ -> bool: Alles was !=0 wird true, ==0 wird false
Umwandlung von bool -> typ: true wird 1, false wird 0.

Regards
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: