abooAyoob Skrevet 23. juli 2012 Del Skrevet 23. juli 2012 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
Sigralix Skrevet 23. juli 2012 Del Skrevet 23. juli 2012 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
LostOblivion Skrevet 23. juli 2012 Del Skrevet 23. juli 2012 (endret) val == 10 Edit: Sniped. Endret 23. juli 2012 av LostOblivion Lenke til kommentar
Han Far Skrevet 23. juli 2012 Del Skrevet 23. juli 2012 Tror at Sigralix har rett. Slik koden er nå, står det Hvis card_name[0] er 'Q' Sjekk om val er lik 10 Tror ikke det er formålet. Lenke til kommentar
GeirGrusom Skrevet 23. juli 2012 Del Skrevet 23. juli 2012 Compileren burde også gitt advarsler på dette, da det er uttrykk som ikke fører til noen endring i state. Lenke til kommentar
abooAyoob Skrevet 23. juli 2012 Forfatter Del Skrevet 23. juli 2012 Hahaha, klarte å overse den! Dette var ganske så flaut, ettersom jeg har programmert i java i to år nå Compileren min sa forsåvidt ingenting, bruker gcc som fulgte med på ubuntu natty. Takk for raskt svar folkens! Lenke til kommentar
GeirGrusom Skrevet 23. juli 2012 Del Skrevet 23. juli 2012 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
Ernie Skrevet 23. juli 2012 Del Skrevet 23. juli 2012 (endret) 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 23. juli 2012 av Ernie Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå