Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Newbie-frage zur if-abfrage

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 ]
000
14.05.2006, 15:45 Uhr
~myth2806
Gast


Hey leutz

ich habe gerade angefangen mich etwas mit c unter linux auseinander zu setzen und will ein einfaches kleines programm schreiben und hänge schon fest.
ich würde gerne in einer "if" abfrage mehrer werte abfragen können.
ich stelle mir das ganze so vor:
"if(i==0||1||2)"
also ist "i" 0 oder 1 oder 2 dann mach das und das.
leider funktioniert das hanze nicht so und es wird die if anweisungen immer ausgeführt auch wenn der wert von "i" ein anderer ist

ich hoffe einer von euch kann mir sagen woran das liegt.

greez myth
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.05.2006, 15:47 Uhr
Pablo
Supertux
(Operator)


-->
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.05.2006, 15:49 Uhr
Pablo
Supertux
(Operator)


lerne zuerst richtig C (es gibt im Netz unzählige Tuts. oder ebooks)


C++:
if(i==0 || i==1 || i==2) ...



wäre richtig. If wertet die boolsche Ausdrücke, die du da schreibst. Wenn du i==0 || 1 hast, dann ist das immer true, denn i == 0 || 1 bedeutet nicht "wenn i == 0 oder i == 1" sondern "wenn i == 0 oder 1".
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 14.05.2006 um 15:50 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.05.2006, 17:24 Uhr
Karldin Shinowa
Professional Noob


oder nimm switch


C++:

switch(i)
{
case 1: case 2: case 3://hier das was er tun soll
}


--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.05.2006, 18:46 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


oder unter der annahme i ist unsigned...

C++:
if(++i&3)


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
14.05.2006, 19:03 Uhr
Karldin Shinowa
Professional Noob


@ windalf: is das ne if-schleife?
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
14.05.2006, 19:04 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


nein eine ganz normale bedinung... was verstehst du denn unter ner "if-schleife"? wenn man da nen goto vorpackt?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
14.05.2006, 19:12 Uhr
kronos
Quotenfisch
(Operator)


Oder etwas intuitiver if( i>-1 && i<3).
| macht ein bitwise or, i==0|1|2 ist also äquivalent zu i==3.
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
14.05.2006, 19:30 Uhr
Karldin Shinowa
Professional Noob



Zitat von Windalf:
nein eine ganz normale bedinung... was verstehst du denn unter ner "if-schleife"? wenn man da nen goto vorpackt?

War ein scherz... kapier die bedingung von dir und kronos aber net ganz
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
14.05.2006, 19:42 Uhr
Pablo
Supertux
(Operator)


@kaldrin:

++i macht vor der if-Abfrage ein i=i+1.
(dez) = (bin)
0 = 00
1 = 01
2 = 10
3 = 11

wenn 3 die Bitmaske bei ++i&3, dann bedeutet es, dass man die ersten 2 Bits "schneidet" (alle andere sind 0). Wenn die Zahl zwischen 0 und 2 liegt und eine 1 dazu addiert wird, dann sieht man, dass in den ersten 2 Bits mind. eine 1 vorhanden ist. Also ist ++i&3 entweder 1 oder 2 oder 3 und alle größer als 0, deswegen für if ist das ein true.
Das Einzige Problem mit dieser Abfrage ist, dass wenn i == 4 oder i==5 liefert das ebenfalls true, denn (100 + 1)&3 = 01 > 0.

Jetzt fällt mir auf, was bindet stärker, ++ oder &? Ich würde auf ++ tippen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
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: