/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
større eller mindre
Fra : Martin


Dato : 19-07-04 20:53

TurboC++
Hvordan skriver man "eller"?
Skal bruge noget i retning af dette:
if (ab<3) or if (ab>6) gør noget...

Mvh.
Martin



 
 
Bertel Lund Hansen (19-07-2004)
Kommentar
Fra : Bertel Lund Hansen


Dato : 19-07-04 21:22

Martin skrev:

>Hvordan skriver man "eller"?

|| (to tegn - to lodrette streger)

>Skal bruge noget i retning af dette:
>if (ab<3) or if (ab>6) gør noget...

   if (ab<3 || ab>6) gør XYZ

Du kan *ikke* skrive:

   if (ab<3) || if (ab>6) gør XYZ

Sådan en konstruktion skal se sådan ud:

   if (ab<3) gør XYZ
   if (ab>6) gør XYZ

Det er ligegyldigt hvilken af delene du skriver, men den kompakte
er mest logisk (XYZ skal kun stå ét sted).

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Martin (19-07-2004)
Kommentar
Fra : Martin


Dato : 19-07-04 21:35



"Bertel Lund Hansen" <nospamius@lundhansen.dk> skrev i en meddelelse
news:p2bof01kl7qfrq8p1b7p2d21kpnbuok4sn@news.stofanet.dk...
> Martin skrev:
>
> >Hvordan skriver man "eller"?
>
> || (to tegn - to lodrette streger)
>
> >Skal bruge noget i retning af dette:
> >if (ab<3) or if (ab>6) gør noget...
>
> if (ab<3 || ab>6) gør XYZ
>
******* Tak, det var lige dét :) ************
Hvorfor skulle man også skrive en lang printsætning to gange når man kan få
den ned på en.

> Du kan *ikke* skrive:
>
> if (ab<3) || if (ab>6) gør XYZ
>
> Sådan en konstruktion skal se sådan ud:
>
> if (ab<3) gør XYZ
> if (ab>6) gør XYZ
>
> Det er ligegyldigt hvilken af delene du skriver, men den kompakte
> er mest logisk (XYZ skal kun stå ét sted).
>
> --
> Bertel
> http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/



Jesper Louis Anderse~ (20-07-2004)
Kommentar
Fra : Jesper Louis Anderse~


Dato : 20-07-04 12:39

Bertel Lund Hansen <nospamius@lundhansen.dk> wrote:

>>Skal bruge noget i retning af dette:
>>if (ab<3) or if (ab>6) g?r noget...
>
> if (ab<3 || ab>6) g?r XYZ

Nogen gange er det paenere at lave den eksplicit:

if (ab < 3) {
   //XYZ
} else if (ab > 6) {
   //XYZ
}

Men hvis du skal goere det samme i alle tilfaelde, saa
er det bare med at faa den saa kompakt det er muligt.

Nu vi er ved optimering af logiske (bool'ske) udtryk, saa
kan de-morgans regler for en god ordens skyld lige naevnes:

http://mathworld.wolfram.com/deMorgansLaws.html

Beviset for deres korrekthed foeres nemmest ved sandhedstabeller,
hvis man er i tvivl.

En anden ting jeg ikke kan lide er naar folk kalder deres variabel
for notFound, notSet, notFlagged osv. Fjern negationen og kald dem
found, set, flagged etc.

--
j.

Bertel Lund Hansen (20-07-2004)
Kommentar
Fra : Bertel Lund Hansen


Dato : 20-07-04 15:19

Jesper Louis Andersen skrev:

>Nogen gange er det paenere at lave den eksplicit:

>if (ab < 3) {
>   //XYZ
>} else if (ab > 6) {
>   //XYZ
>}

Jeg kan ikke forestille mig et tilfælde hvor det er en fordel.
Bl.a. foretrækker jeg kun at skulle skrive XYX ét sted.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Ken F (22-07-2004)
Kommentar
Fra : Ken F


Dato : 22-07-04 11:17

> >if (ab < 3) {
> >   //XYZ
> >} else if (ab > 6) {
> //XYZ
> >}
>
> Jeg kan ikke forestille mig et tilfælde hvor det er en fordel.
> Bl.a. foretrækker jeg kun at skulle skrive XYX ét sted.

Det kan være nemmere at finde en fejl hvis det er skrevet med to if
sætninger. Hvis fx. XYZ fejler præcis når ab > 6.

Uanset hvad kan flere if-sætninger hurtigt blive mere kompliceret end
man lige forstiller sig.

Mvh Ken

Nicolai Hansen (23-07-2004)
Kommentar
Fra : Nicolai Hansen


Dato : 23-07-04 12:31

Bertel Lund Hansen <nospamius@lundhansen.dk> wrote in message news:<o3aqf0dhjnbt9ge51fnr5nf5nacagfle19@news.stofanet.dk>...
> Jesper Louis Andersen skrev:
>
> >Nogen gange er det paenere at lave den eksplicit:
>
> >if (ab < 3) {
> >   //XYZ
> >} else if (ab > 6) {
> //XYZ
> >}
>
> Jeg kan ikke forestille mig et tilfælde hvor det er en fordel.
> Bl.a. foretrækker jeg kun at skulle skrive XYX ét sted.

Puha, jeg vil så lige lufte min manglende viden her... Hvad med f.eks.

if ((a++>3) || (a++<0)) {};

if (a++>3) {}; else if (a++<0) {};

den øverste ændrer a to gange i samme udtryk - er dette ikke "undefined behaviour"?

(jeg spørger kun fordi det forvirrer mig lidt)

Troels Thomsen (23-07-2004)
Kommentar
Fra : Troels Thomsen


Dato : 23-07-04 13:06

>
> Puha, jeg vil så lige lufte min manglende viden her... Hvad med f.eks.
> if ((a++>3) || (a++<0)) {};
> if (a++>3) {}; else if (a++<0) {};
> den øverste ændrer a to gange i samme udtryk - er dette ikke "undefined
behaviour"?

Der er en hel række mere eller mindre udspekulerede eksempler af den slags
hvis du følger dette link:
http://www.eskimo.com/~scs/C-faq/q3.9.html

So given
a[i] = i++;
we don't know which cell of a[] gets written to, but i does get incremented
by one.

No. Once an expression or program becomes undefined, all aspects of it
become undefined. See questions 3.2, 3.3, 11.33, and 11.35.

tpt



Richard Flamsholt (23-07-2004)
Kommentar
Fra : Richard Flamsholt


Dato : 23-07-04 21:00

nic@aub.dk (Nicolai Hansen) skrev:
>if ((a++>3) || (a++<0)) {};
>
>den øverste ændrer a to gange i samme udtryk - er dette ikke "undefined behaviour"?

Nej. || (og &&) garanterer at udtrykkene evalueres i rækkefølge og hver
især fuldt ud, inklusiv sideeffekter.

Altså vil a++<0 kun blive evalueret hvis a++ ikke var større end 3, for
hvis a++ var større end 3 kunne OR-udtrykket straks bestemmes til true.

>(jeg spørger kun fordi det forvirrer mig lidt)

Den kodestump vil sandelig også forvirre mange, så derfor bør man undgå
at skrive den slags.

--
Richard Flamsholt
richard@flamsholt.dk - www.richard.flamsholt.dk

Bertel Lund Hansen (23-07-2004)
Kommentar
Fra : Bertel Lund Hansen


Dato : 23-07-04 21:21

Richard Flamsholt skrev:

>>if ((a++>3) || (a++<0)) {};

>Altså vil a++<0 kun blive evalueret hvis a++ ikke var større end 3, for
>hvis a++ var større end 3 kunne OR-udtrykket straks bestemmes til true.

For lige at få det på det rene:

Hvis a er -7, vil den blive talt *2* op når udtrykket evalueres.

Korrekt?

>Den kodestump vil sandelig også forvirre mange, så derfor bør man undgå
>at skrive den slags.

Klart.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Nicolai Hansen (24-07-2004)
Kommentar
Fra : Nicolai Hansen


Dato : 24-07-04 20:40


"Bertel Lund Hansen" <nospamius@lundhansen.dk> skrev i en meddelelse
news:mns2g0djc4j36s4tcvtv6cmmr44ho81gup@news.stofanet.dk...
> Richard Flamsholt skrev:
>
> >>if ((a++>3) || (a++<0)) {};
>
> >Altså vil a++<0 kun blive evalueret hvis a++ ikke var større end 3, for
> >hvis a++ var større end 3 kunne OR-udtrykket straks bestemmes til true.
>
> For lige at få det på det rene:
>
> Hvis a er -7, vil den blive talt *2* op når udtrykket evalueres.
>
> Korrekt?
>

Ja helt korrekt :) Men det var nu heller ikke det spørgsmålet gik på ...

> >Den kodestump vil sandelig også forvirre mange, så derfor bør man undgå
> >at skrive den slags.
>
> Klart.

Joe ;) nu var det et tænkt eksempel...




Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409076
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste