5 svar
85 visningar
Didar 208
Postad: 1 okt 2022 22:01

funktionen (randomNum) anropas aldrig så den kommer aldrig köras

Hej jag fick ett meddelande av min lärare där hon vill att jag ska anropa funktionen men är lite förvirrad har jag inte gjort det längst uppe ? 

 

datav 34
Postad: 2 okt 2022 00:04 Redigerad: 2 okt 2022 00:04

int randomNum(void); är inte ett anrop - det är en funktions deklaration. 
Det medgör att du kan kalla på metoden även fast den ligger under main. 
Annars kommer din kompilator klaga på "implicit declaration of function randomNum"

Går även att lösa  med att man lägger main längst ner i koden och har randomNum över.

Didar 208
Postad: 2 okt 2022 00:45
datav skrev:

int randomNum(void); är inte ett anrop - det är en funktions deklaration. 
Det medgör att du kan kalla på metoden även fast den ligger under main. 
Annars kommer din kompilator klaga på "implicit declaration of function randomNum"

Går även att lösa  med att man lägger main längst ner i koden och har randomNum över.

Förstod inte riktigt vad du menade, ska jag lägga funktionsdeklarationen under i main eller ska jag flytta ner main funktionen och upp med den andra funktionen?

Fermatrix 7841 – Fd. Medlem
Postad: 2 okt 2022 05:00 Redigerad: 2 okt 2022 05:02

Du gör ett par farliga saker. 

 

Att deklarera en variabel utan att sätta den kan leda till odefinierat beteende som kan leda till att du kraschar. Har du tur är den 0 per default av din IDE men det är inte värt att riskera det. Inte heller ska du göra det till en vana.

 

Du måste också casta srand av time. 

 

C kör koden som den kommer, om du försöker kalla på en funktion deklarerad efter main så kommer inte det att köras då den inte vet vad det är för något du refererar till. 

Du har två val, lägga main efter alla dina funktioner eller skriva en prorotyp av dina funktioner längst upp.

 

Låt säga att jag har en funktion:

int doSomething()

{

....

...

}

 

En prototyp som berättar för main att funktionen existerar som du gjort längst up:

int doSomething(void);

Nu inuti main får du kalla på funktionen genom att kalla på dess namn. Precis som när du skriver prototypen. 

Didar 208
Postad: 2 okt 2022 14:30 Redigerad: 2 okt 2022 14:30
Stämmer det nu? 

Fermatrix 7841 – Fd. Medlem
Postad: 2 okt 2022 17:00

Ja, det funkar, kolla så det går att köra också och gör som du ska.

Varningen kommer eftersom du inte castar retur typen i argumentet för srand.

srand((unsigned)time(NULL));
Svara
Close