Gå til innhold

if (boolean = true) spørsmål angående utfallet av denne setninga.


Anbefalte innlegg

Hei. Går første året dataingeniør og jobber nå med java. Har ganske god kunnskap angående med java, men det er en ting jeg ikke helt klarer å forstå.

 

Det er ikke nødvendigvis en feil som er kritisk, siden jeg vet hva jeg må gjøre for å få det til sånn jeg vil, men jeg vil fortsatt vite hva som fører til det spesifikke problemet.

 

boolean godkjent = false;

 

if (godkjent = true)

{

//Do something.

}

 

Problemet her er da at if setninga setter godkjent til true. For å ordne problemet må jeg derfor skrive:

 

if(godkjent == true)

{

//Do something.

}

 

Jeg forstår logikken i det, men jeg forstår ikke helt hvorfor jeg ikke får error i første setning, siden den if setninga er jo i bunn og grunn ubrukelig, siden den alltid vil gjøre hva som står inne i den siden den har ikke noe parameter for når den skal bli kjørt gjennom.

 

Noen som bare kan forklare fort hvorfor det er lov å skrive sånn i en if setning? Og hva er formålet? På hvilken måte kan den vere nyttig?

Lenke til kommentar
Videoannonse
Annonse

"godkjent = true" setter godkjent til "true", men verdien av hele dette uttrykket er også "true", dermed vil if-setningen gi positivt svar. Du kan f.eks. bruke dette når du ønsker å sette flere variabler til samme verdi, slik:

 

a = b = c = true;

Lenke til kommentar

I C og C++ funker det med int også (0 = false, alt annet = true). Som nevnt er resultatet av en assignment venstrehåndsverdien. Dvs. resultatet av i = true er i, som vil være true. Dersom i er bool, vil resultatet være bool.

 

Dette kan være hensiktsmessig av flere årsaker, og her er et eksempel:

 

if((value = DoSomething()) == true)

 

Genrelt sett så sjekker man ikke om booleske uttrykk er true eller false, ettersom booleske uttrykk er true eller false uansett.

 

bool godkjent = false;
if(godkjent) { ... }

 

Noen synes det er hensiktsmessig for lesbarhet å uttrykke == true eller == false, men jeg synes ikke det.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...