Vad gör funktionen srand (tid (0)) i C ++?


Bästa svaret

Låt oss bara börja från början, som du vet att datorn genererar pseudorandom siffror är inte riktigt slumpmässiga eftersom de bygger på någon formel designad av programmerarna. Och baserat på den formeln genererar datorn en uppsättning slumpmässiga nummer som vi förväntar oss. Ett sätt att tänka på detta är att datorn börjar läsa från en bok som innehåller siffror på varje sida. Genom att läsa från den här boken kan datorn se ut som kan ge en sekvens av slumpmässiga nummer.

Men det finns ett problem: Datorn börjar läsa från boken från början. På grund av denna dator kommer alltid att producera samma uppsättning ”slumpmässiga” nummer i ett program. Antag att om du använder detta program någonstans, säg ett tärningsrullande spel, kommer det alltid att ge samma resultat och du vill inte ha det.

En lösning på detta problem skulle vara om datorn börjar läsa från en godtycklig plats. i boken och inte från början. Det kallas väl “ sådd ”. Genom att skicka tidsargumentet till funktionen srand genererar vad det gör i grunden slumptalet baserat på det aktuella datumet och tiden på grund av vilket du blir olika slumpmässig varje gång du startar ett program, och det här är dock inte tillförlitligt men fungerar för det mesta.

Om du använde den här koden skulle du ha inkluderade en fil överst < cstdlib om inte det är okej. Den här filen innehåller funktionens definition av att generera slumptalet.

Svar

I C ++, vad händer om jag skriver ”return 1 ”i huvudfunktionen?

Om uttalandet return 1; faktiskt körs kommer det att leda till att ditt program avslutas och returnerar statusen 1 till samtalsmiljön. (Det kan returnera värdet 1 till samtalsfunktionen, men C ++ tillåter inte att ringa main.)

Vad detta betyder beror på miljön. Språket tilldelar ingen betydelse till returvärdet 1. Det kräver retur 0; för att returnera en status som indikerar framgång. Rubriken , som deklarerar funktionen exit(), definierar också makron EXIT\_SUCCESS och EXIT\_FAILURE, som har den uppenbara semantiken om deras värden returneras från main. (Att returnera ett värde från main motsvarar i huvudsak att ringa exit() med samma värde.)

På många system , inklusive Linux, andra UNIX-liknande system och Windows, return 0 betecknar framgång och returnering 1 betecknar misslyckande – men andra system har olika konventioner. (I synnerhet använder OpenVMS jämna värden för att beteckna misslyckande och udda värden för att beteckna framgång, så return 1; skulle indikera framgång; C-runtime har en speciell kod för att göra return 0; returnerar en udda, dvs. framgångsrik, status.)

Om du skriver kod som bara är avsedd att fungera på Linux / UNIX / POSIX-system, return 1; kan användas för att indikera att programmet misslyckades – men return EXIT\_FAILURE; är mer bärbar.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *