43
Tags:
c++
Skrevet af
Bruger #2853
@ 26.01.2003
Velkommen til min 3. del af C++ fra bunden. I denne del vil du lære hvordan du opretter og bruger constants. Constants er nogenlunde det samme som en variabel. Forskellen ligger dog i at man efter initialisering ikke kan tilføje eller fjerne værdier fra/til den. Constants er gode at bruge, da men let undgår programmerings fejl og logiske fejl. Samtidig vil din compiler også altid opfange ethvert forsøg på at fjerne eller tilføje en værdi fra/til en constant, så der ikke kan opstå nogle uventede fejl.
#define
Der er tre forskellige måde at deklarere en constant på, den første metode stammer fra programmeringssproget C, nemlig #define. Som jeg skrev i en af mine tidligere dele så blev alt som starter med "havelågen" (#) brugt af preprocessoren. Og dette gælder også for #define.
#define bruges på følgende måde:
#define pi 3.1415
Nu har pi så fået værdien 3.1415, og hver eneste gang du skriver pi vil det blive erstattet af 3.1415. Lad os prøve at lave et lille program, som bruger det vi lige har lært:
#include <iostream>
#define pi 3.1415
using namespace std;
int main()
{
cout << "Pi er: " << pi;
return 0;
}
Når ovenstående er compiled skulle det gerne udskrive:
Pi er: 3.1415Ulempen ved at bruge #define er at der er ikke noget type check, vi har på intet tidspunkt deklareret om pi er float, integer eller noget andet, og dette kan let føre til problemer senere hen.
const
Den anden måde er at bruge nøgleordet const når vi deklarerer en variabel.
const float pi 3.1415;
Variablen pi er nu en constant, den er af typen float, og indeholder værdien 3.1415. Denne gang ser vores program sådan her ud:
#include <iostream>
using namespace std;
int main()
{
const float pi = 3.1415;
cout << "Pi er: " << pi;
cin >> "";
return 0;
}
Når dette er compiled skulle programmeret gerne skrive fuldstændig det samme som vores eksempel med #define. Fordelen ved at bruge const fremfor #define er at der ved const er et check af hvilken type variablen kan indeholde, og dermed er risikoen for en fejl i programmet blevet lavere.
enum
Den 3. måde er ved at bruge enum. Enum kan definere en ny type, og sætter en begrænsning som man selv kan vælge. For eksempel:
enum farve { SORT, HVID, GUL };
Vi har nu oprettet en ny type som hedder farve. Hver eneste "enumeration" indeholder en integer værdi, som, medmindre andet er specificeret, starter fra 0 af. Dvs. at SORT er ligemed 0, HVIS er ligemed 1 og GUL er ligemed 2.
Men værdierne kan skam også selv specificeres:
enum farve { SORT = 5, HVID, GUL, LILLA = 15, BRUN };
Nu er SORT så 5, HVID er 6, GUL er 7, LILLA er 15 og BRUN er 16.
Fordelen ved at bruge enum, er at værdierne er begrænset til dem som du har sat, og bliver tjekket af compileren
Lad os prøve at lave et simpelt program hvor vi gør brug af enum:
#include <iostream>
using namespace std;
int main()
{
enum farve { SORT, HVID, GUL };
farve minFarve = SORT;
cout << "minFarve: " << minFarve;
return 0;
}
Når dette program er compiled skulle der gerne stå:
minFarve: 0Dette gør den fordi at SORT jo indeholder integer værdien 0.
Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.
Del også gerne artiklen med dine Facebook venner:
Kommentarer (11)
Gode guides! Keep up the good work!
agree med Thomas
mm , glæder mig til næste artikel
tak igen!!
Det er en god artikel, manglede bare lige at cin bliver beskrevet.
Min fejl.. Beskrivelsen af cin står i næste artikle..
Total respekteret artikel
glæder mig til at læse de 3 sidste afsnit...
til alle dem der får fejl når de compiler: Brug dev-cpp, dte bruger jeg og jeg har aldrig fået en eneste fejl da jeg compilede de koder som står her inde!!
al magt til dev-c++
Fin atikkel, men der er en ting jeg ikka kan forstå i det eksempel med const, hvad laver (cin >> ""
der?? den bliver jo ikke brugt
Nice artikel, Keep ip ut ffs!
hmm fin artikel men....cin får min compiler til at sige der er en fejl så prøvede jeg at fjerne det så virkede
Top Notch! Rigtig fedt at du forklarer forskellige aproaches til konstanter.
den der enum, kan man godt kalde den for en array? Sikkert et dumt spørgsmål xD
Du skal være
logget ind for at skrive en kommentar.