Avatar billede oink Nybegynder
07. oktober 2002 - 22:24 Der er 6 kommentarer og
3 løsninger

Nogen der gider at forklare.......

Følgende sætning:

cxCaps = (tm.PitchAndFamily & 1 ? 3 : 2) * cxChar / 2;

cxChar holder værdien for gennemsnitsbredden for 1 char.
Avatar billede soreno Praktikant
07. oktober 2002 - 22:30 #1
"tm.PitchAndFamily & 1 ? 3 : 2"
kan oversættes til:

(expression1) ? (expression2) : (expression3)
"If expression1 is true,
return the value of expression2;
otherwise, return the value of expression3."

altså hvis (tm.PitchAndFamily & 1) er sand
3 * cxChar / 2;
ellers
2 * cxChar / 2;
Avatar billede jespernaur Nybegynder
07. oktober 2002 - 22:31 #2
Hvis bit0 er sat i tm.PitchAndFamily vil der blive ganget med 3, ellers med 2.
Avatar billede disky Nybegynder
07. oktober 2002 - 22:31 #3
okay den deler vi lige lidt op

tm.PitchAbdFamily bliver and'et med 1 hvis det er true bliver værdien af ()'en til 3 ellers til 2
Dette resultat bliver så ganget med cxChar/2

Det kunne også været skrevet som

if(tm.PitchAndFamily & 1)
{
cxCaps=3*cxChar/2;
}
else
{
cxCaps=2*cxChar/2;
}

Jeg foretrækker den sidste udgave da den er langt mere læsbar.
Avatar billede oink Nybegynder
08. oktober 2002 - 16:54 #4
Jeg har ikke helt forstået, hvorfor man bruger & 1 ?? For If(noget & 1){bla bla} 1 er da altid true..!?
Avatar billede oink Nybegynder
08. oktober 2002 - 16:54 #5
For i den if sætning skal nok lige ud :)
Avatar billede soreno Praktikant
08. oktober 2002 - 18:14 #6
& er en bitvis AND

skal vi sige at tm.PitchAndFamily har værdien værdien 61 (bin: 111101) og skal AND'es med 1 (bin: 1)

111101 (61)
000001 (1)
-----------
000001 (Værdien efter and operationen)

og hvis så tm.PitchAndFamily har værdien værdien 60 (bin: 111100)
111100 (60)
000001 (1)
-----------

så derfor - som jesper skriver:
"Hvis bit0 er sat i tm.PitchAndFamily vil der blive ganget med 3, ellers med 2."
000000 (Værdien efter and operationen)

husk så på at:
false = 0
og true != 0
Avatar billede soreno Praktikant
08. oktober 2002 - 18:14 #7
hov, der sneg sig en lille fejl ind..
og hvis så tm.PitchAndFamily har værdien værdien 60 (bin: 111100)
111100 (60)
000001 (1)
-----------
000000 (Værdien efter and operationen)
Avatar billede soreno Praktikant
08. oktober 2002 - 18:18 #8
du kan læse lidt mere om "det der bit halløj" her:
http://www.howstuffworks.com/boolean1.htm
Avatar billede oink Nybegynder
09. oktober 2002 - 13:59 #9
Jeg takker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester