Avatar billede touel Nybegynder
31. maj 2005 - 14:59 Der er 13 kommentarer og
2 løsninger

Boolean variabler

Jeg syntes det kan virke lidt forvirrende når man i sin kode opretter en boolean variabel og sætter den til enten true eller false og bruger den efterfølgende i koden.
Noget der kan virke uoverskueligt er fx følgende eksempel:

boolean isThere = false;

{
  bla. bla. bla.

}

if (!isThere)
{
}

Selvom isThere har nu modsat værdi, dvs. true, hvorfor kan den gå ind i if løkken, og hva skal gælde for at den ikke gør det.

Er der nogen der kan forklare hvordan man bruger dem.
Eller hvis nogen har skrevet en artikel om dem, så refererer venligst.
Avatar billede medions Nybegynder
31. maj 2005 - 15:00 #1
Brug istedet:
if (isThere != true)
{
}

//>Rune
Avatar billede ksoren Nybegynder
31. maj 2005 - 15:12 #2
! er logisk not

!isThere

Hvis isThere er 0, vil udtrykket blive vendt til sandt.
Hvis isThere er forskellig fra 0, vil udtrykket blive vendt til falsk.
Avatar billede touel Nybegynder
31. maj 2005 - 15:20 #3
<ksoren> Jeg forestiller mig en kasse hvori variablen isThere eksisterer, og jeg sætter den til at pege på falsk, når jeg opretter den. Så hvor dælen kommer nullet ind i det hele ;0) Som boolen kan den kun pege på enten false, eller true.
Avatar billede mikkelbm Nybegynder
31. maj 2005 - 16:16 #4
"Som boolean kan den kun pege på enten false, eller true."

>>

Hvilket svarer til en bit der kan være 0 eller 1 ;)
Avatar billede mikkelbm Nybegynder
31. maj 2005 - 16:17 #5
(Om det så var det han mente, skal jeg ikke kunne svare på)
Avatar billede arne_v Ekspert
31. maj 2005 - 16:50 #6
jeg tror faktisk at de bliver gemt som byte og ikke som bit
Avatar billede busschou Praktikant
31. maj 2005 - 16:56 #7
! negerer - om man siger true/false eller 1/0 er vel en tanke måde
hvis isThere er true så er !isThere false
hvis isThere er false så er !isThere true
en if sætning er opfyldt hvis betingelsen giver sand altså true
Med andre ord er din if sætning opfyldt hvis isThere er false
Avatar billede busschou Praktikant
31. maj 2005 - 16:58 #8
Om så performance mæssigt ! er at foretrække fremfor != tør jeg ikke vove mig meget ud i
Men jeg kunne forestille mig at ! er hurtigst i og med det er en operator som _kun_ opererer på sandheds værdier.
Avatar billede busschou Praktikant
31. maj 2005 - 17:02 #9
en if sætning er i øvrigt altid kun opfyldt hvis betingelsen er true
Man kunne pseudo skrive sådan her
--
if (x = 2) {gør noget}
evalueres som
if ((x=2)==true){gør noget}
--
igen med din sætning
--
if (!isThere) {gør noget}
evalueres som
if (!isThere == true) {gør noget}
og denne giver jo kun true hvis !isThere er true , dvs hvis isThere = false
Avatar billede mikkelbm Nybegynder
31. maj 2005 - 21:57 #10
>> Arne

Okay... Det vidste jeg ikke. Jeg troede at det mest naturlige ville være at gemme det i en bit. Ligesom man kender fra f.eks. mssql-serveren.
Avatar billede touel Nybegynder
31. maj 2005 - 22:21 #11
Ok  busschou - mange tak for dine kommentarer. Jeg syntes bare at når jeg ser koder med boolean variabler, og jeg forstår det pågældende kode, så bliver jeg forvirret når jeg ser et andet kode eks. Men jeg husker det du har skrevet og prøver at forstå dem igen. Tak !
Avatar billede simonvalter Praktikant
01. juni 2005 - 00:09 #12
Kommentar: mikkelbm
31/05-2005 16:16:22    "Som boolean kan den kun pege på enten false, eller true."

Hvilket svarer til en bit der kan være 0 eller 1 ;)   

Kommentar: arne_v
31/05-2005 16:50:26    jeg tror faktisk at de bliver gemt som byte og ikke som bit

hvis i snakker om i bytecoden så bliver de gemt som int.
Avatar billede busschou Praktikant
01. juni 2005 - 08:15 #13
touel >> det var så lidt :o)
Avatar billede arne_v Ekspert
01. juni 2005 - 09:43 #14
mikkel>

Det er for langsomt at tilgå en bit.

simon>

Ja - JLS & JVMS antyder det. Men jeg tror kun at det er operationerne der
er int instruktioner. Pladsforbruget i memory på runtime er kun en byte.
Avatar billede simonvalter Praktikant
01. juni 2005 - 09:46 #15
jep
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