14 svar
236 visningar
Alan123 är nöjd med hjälpen
Alan123 325
Postad: 22 apr 2017

Kompileringsfel!

vet någon vad som är fel  i den här koden?

#include <stdio.h>

int min_funktion(int x, int y);

int main() {

min_funktion(3,4);
return 0;
}

int min_funktion(int x, int y); {
if (x>y) {
printf("%d",x);
}
else if (x<y) {
printf("%d",y);
}
}

Henrik Eriksson 1733 – F.d. Moderator
Postad: 22 apr 2017 Redigerad: 22 apr 2017

Vad får du för kompileringsfel? Står det möjligen att du har ett semikolon efter (int x, int y). Ta bort det.

Alan123 325
Postad: 23 apr 2017

Det står så här: error: expected identifier or ‘(’ before ‘{’ token
int min_funktion(int x, int y); {

Bubo 2974
Postad: 23 apr 2017 Redigerad: 23 apr 2017

Men då har ju kompilatorn pekat ut felet exakt. Tyckte du att någon skulle titta på HELA koden i alla fall?

 

Det finns ingenting framför   {  Eftersom du avslutade raden med semikolon.

Om du hade testat Henriks förslag hade du nog bara behövt skriva "tack", tror jag...

Alan123 325
Postad: 23 apr 2017

Ok, men den skriver inte ut något i alla fall, vet någon varför?

Länge sedan man kodade C, men var det inte såå att man även var tvungen att skriva println; för att avsluta raden skriva ut bufferten på stdout?

Hur exekverar du? Det är inget fel på programmet fast man brukar skriva main(void) i stället för main(). Kolla att kompilatorn har skapat en körbar fil.

Bubo 2974
Postad: 23 apr 2017

Kör du den gamla körbara filen? Det är ett ganska vanligt misstag.

Du borde ha fått en ny körbar fil när du ändrade och kompilerade om.

Alan123 325
Postad: 23 apr 2017

Japp de gick bra! Tackar! :D

Alan123 325
Postad: 23 apr 2017

Men hur gör man om man ska returnera det största talet. alltså inte skriva ut det?

Bubo 2974
Postad: 23 apr 2017

Byt printf("%d",x); mot return x;

Men jag tror att du måste ta hänsyn till att x och y kan vara lika. Kan man skriva en funktion som kan returnera antingen ett heltal eller ingenting?

Alan123 325
Postad: 23 apr 2017

så if x=y returnera inget?

Om talen är lika så kan du returnera vilket som helst av dem.

Du bör döpa funktionen till ngt annat dock.

Bubo 2974
Postad: 23 apr 2017

Det är så du har skrivit din min_funktion just nu.

min_funktion(1,42) skriver ut 42.
min_funktion(42,1) skriver ut 42.
min_funktion(42,42) skriver inte ut något alls.

 

Jag vet inte om man kan få en funktion att returnera värden ibland.

Alan123 325
Postad: 23 apr 2017

Ja ok. Om de är lika så returnera vilket som.

Svara Avbryt
Close