Avatar billede Slettet bruger
12. februar 2003 - 11:02 Der er 6 kommentarer og
2 løsninger

Konstant

Jeg har et simpelt spm ang konstanter.

const unsigned short int elev = 15;
og
unsigned short int elev = 15;

Hvad er foreskellen på disse 2? Er der overhovedet nogen? I så fald hvorfor skal man så bruge const foran?!
Avatar billede arne_v Ekspert
12. februar 2003 - 11:04 #1
Prøv og skriv:

elev = 7;

et sted længere nede i koden, så vil du se forskellen.

const fortæller compileren at noget er konstant.
Avatar billede arne_v Ekspert
12. februar 2003 - 11:06 #2
const er en feature som er ny i C++ i forhold til C.

I C bruger man:

#define elev 15

for at lave det samme.
Avatar billede arne_v Ekspert
12. februar 2003 - 11:08 #3
I C bruger man ofte all-uppercase d.v.s. ELEV og vi er ihvertfald
en del som også bruger den konvention i C++ for const'er.

Bemærk at const i en argument-liste har en lidt anden betydning.
Avatar billede segmose Nybegynder
12. februar 2003 - 14:49 #4
arne_v : Standard C har altså også const.

const bruges enten for at forhindre at en værdi ændres eller
for at give compileren chancen for at udføre noget optimering,
med en const kan compileren altid vide hvad værdi den skal bruge
og kan så lave noget "constant folding", dvs. allerede på
compileringstidspunktet lægge værdier den ved er konstanter sammen
fx.
int noget;
noget = elev + 5;

bliver reelt til

noget = 20;

istedet for at skulle lave beregningen på kørsels tidspunktet.

I funktions kald, med pointerer og i C++ bliver det endnu
vigtigere da man så kan lave endnu flere optimeringer.

Så svaret på dit spørgsmål er når noget ikke ændre værdi bør man
altid bruge const, evt. kan man bruge #define for simple værdier.
Avatar billede motz Nybegynder
12. februar 2003 - 21:33 #5
Ydermere!!
Hvis du ændrer en værdi som er en const (måske ikke med vilje)
i et stort program vil compileren fortælle dig det med det samme du begynder
at debugge.
Avatar billede arne_v Ekspert
12. februar 2003 - 21:42 #6
Hvis man forsøger at assigne til en const så bør compileren give
en compile fejl.

Ikke en runtime fejl som kan/skal debugges.
Avatar billede arne_v Ekspert
19. februar 2003 - 23:04 #7
peters>

Har du fået svar på dit spørgsmål ?
Avatar billede Slettet bruger
19. februar 2003 - 23:51 #8
Kan du tro :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester