Gå til innhold

[Løst] if test slår ikke til


Anbefalte innlegg

I programmet mitt under så slår ikke if testen til hvis jeg taster noen av bokstavene (K, Q, J eller A). Variabelen val er fortsatt 0, selv om den skal forandre verdi til enten 10 eller 11.

Det funker hvis jeg taster noe tall, da spytter den ut tallet.

 

Noen som vet hva som kan være feil? Jeg prøver å lære meg språket c, og eksempelet er hentet fra boken "Head first c".

 

/*
* Program to evaluate face values.
* Released under the Vegas Public License.
* (c)2014 The College Blackjack Team.
*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
char card_name[3];
puts("Enter the card_name: ");
scanf("%2s", card_name);
printf("%s\n", card_name);
int val = 0;
if (card_name[0] == 'K') {
 val == 10;
} else if (card_name[0] == 'Q') {
 val == 10;
} else if (card_name[0] == 'J') {
 val == 10;
} else if (card_name[0] == 'A') {
 val == 11;
} else {
 val = atoi(card_name);
}

printf("The card value is: %i\n", val);
return 0;
}

Lenke til kommentar
Videoannonse
Annonse

Nå er det en stund siden jeg har programmert, men man bruker vel hovedsaklig == når man skal sammenligne noe og = når man skal sette en verdi til noe.

Hvis du endrer til:

if (card_name[0] == 'K') {
 val = 10;
} else if (card_name[0] == 'Q') {
 val = 10;
} else if (card_name[0] == 'J') {
 val = 10;
} else if (card_name[0] == 'A') {
 val = 11;

 

så burde det vel funke?

Lenke til kommentar

Hmmm i C# får man ikke engang kompilert x == 10 på en linje alene, men skjønner hvrofor det ikke er slik i C, ettersom det ikke nødvendigvis alltid er tilfellet at et slikt uttrykk ikke gjør noe, avhengig av hva en programmerer for noe spennende.

Men en advarsel hadde vært fint, ettersom det er en veldig enkel feil å gjøre, som en fort kan se seg blind på.

Lenke til kommentar

Kompilerer man med gcc -Wall så får man advarsel på det, så det er vel bare snakk om hvilket nivå for advarsler man kompilerer med.

 

Redigering:

Mer presist er det -Wunused-value som trigger advarselen.

Endret av Ernie
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å
×
×
  • Opprett ny...