C Variabel, Datatyper, Konstanter

โšก Smart opsummering

Variabler, datatyper og konstanter danner grundlaget for ethvert C-program, hvor variabler lagrer foranderlige vรฆrdier, datatyper definerer stรธrrelsen og omrรฅdet for disse data, og konstanter holder faste vรฆrdier, der aldrig รฆndrer sig.

  • ๐Ÿ”ค Variabler: En variabel er en navngiven identifikator, hvis vรฆrdi kan รฆndres, deklareret ved hjรฆlp af bogstaver, cifre eller et understregningstegn.
  • ๐Ÿงฎ Datatyper: C-typer er primitive, afledte og brugerdefinerede, inklusive int, char, float, double og void, hver med en fast stรธrrelse og et fast interval.
  • ๐Ÿ”’ Konstanter: Konstanter har faste vรฆrdier og omfatter heltal-, tegn-, streng- og reelle konstanter, der aldrig รฆndrer sig.
  • ๐Ÿ‡ง๐Ÿ‡ท Erklรฆring: Bรฅde nรธgleordet const og #define-direktivet opretter konstanter, hvor den ene reserverer hukommelse, og den anden erstatter tekst.
  • ๐Ÿค– AI assistance: GitHub Copilot foreslรฅr korrekte datatyper, markerer navngivningsfejl og fremskynder C-deklarationer.

C Variabel, Datatyper, Konstanter

Hvad er en variabel?

En variabel er en identifikator, som bruges til at gemme en eller anden vรฆrdi. Konstanter kan aldrig รฆndre sig pรฅ tidspunktet for udfรธrelse. Variabler kan รฆndre sig under udfรธrelsen af โ€‹โ€‹et program og opdatere vรฆrdien gemt inde i det.

En enkelt variabel kan bruges flere steder i et program. Et variabelnavn skal vรฆre meningsfuldt. Det skal reprรฆsentere formรฅlet med variablen.

Example: Height, age, are the meaningful variables that represent the purpose it is being used for. Height variable can be used to store a height value. Age variable can be used to store the age of a person

En variabel skal fรธrst erklรฆres, fรธr den bruges et sted i programmet. Et variabelnavn dannes ved hjรฆlp af tegn, cifre og en understregning.

Fรธlgende er de regler, der skal fรธlges, nรฅr du opretter en variabel:

  • Et variabelnavn bรธr kun bestรฅ af tegn, cifre og en understregning.
  • Et variabelnavn bรธr ikke begynde med et tal.
  • Et variabelnavn bรธr ikke bestรฅ af mellemrum.
  • Et variabelnavn bรธr ikke bestรฅ af et nรธgleord.
  • 'C' er et sprog, der skelner mellem store og smรฅ bogstaver, hvilket betyder, at en variabel kaldet 'alder' og 'AGE' er forskellige.

Fรธlgende er eksempler pรฅ gyldige variabelnavne i et 'C'-program:

height or HEIGHT
_height
_height1
My_name

Fรธlgende er eksempler pรฅ ugyldige variabelnavne i et 'C'-program:

1height
Hei$ght
My name

For eksempel deklarerer vi en heltalsvariabel my_variable og tildeler den vรฆrdien 48:

int my_variable;
my_variable = 48;

Forresten kan vi bรฅde deklarere og initialisere (tildele en startvรฆrdi) en variabel i en enkelt sรฆtning:

int my_variable = 48;

Datatyper

'C' giver forskellige datatyper for at gรธre det nemt for en programmรธr at vรฆlge en passende datatype i henhold til kravene til en applikation. Fรธlgende er de tre datatyper:

  • Primitive datatyper
  • Afledte datatyper
  • Brugerdefinerede datatyper

Der er fem primรฆre grundlรฆggende datatyper,

  • int for heltalsdata
  • char for tegndata
  • flydende for flydende kommatal
  • dobbelt for dobbelt prรฆcision med flydende kommatal
  • ugyldig

Arrays, funktioner, pointere og strukturer er afledte datatyper. 'C'-sproget tilbyder mere udvidede versioner af de ovennรฆvnte primรฆre datatyper. Hver datatype adskiller sig fra hinanden i stรธrrelse og omrรฅde. Fรธlgende tabel viser stรธrrelsen og omrรฅdet for hver datatype.

Datatype Stรธrrelse i bytes Rรฆkkevidde
Char eller signeret char 1 -128 til 127
Usigneret char 1 0 til 255
int eller underskrevet int 2 -32768 til 32767
Usigneret int 2 0 til 65535
Kort int eller Usigneret kort int 2 0 til 255
Signeret kort int 2 -128 til 127
Lang int eller Signeret lang int 4 -2147483648 til 2147483647
Usigneret lang int 4 0 til 4294967295
flyde 4 3.4E-38 til 3.4E+38
fordoble 8 1.7E-308 til 1.7E+308
Lang dobbelt 10 3.4E-4932 til 1.1E+4932

Bemรฆrk: I C findes der ingen boolsk datatype.

Heltalsdatatype

Heltal er intet andet end et helt tal. Omrรฅdet for en heltalsdatatype varierer fra maskine til maskine. Standardomrรฅdet for en heltalsdatatype er -32768 til 32767.

Et heltal er typisk pรฅ 2 bytes, hvilket betyder, at det i alt bruger 16 bits i hukommelsen. En enkelt heltalsvรฆrdi tager 2 bytes hukommelse. En heltalsdatatype er yderligere opdelt i andre datatyper sรฅsom kort int, int og lang int.

Hver datatype adskiller sig i rรฆkkevidde, selvom den tilhรธrer heltalsdatatypefamilien. Stรธrrelsen รฆndres muligvis ikke for hver datatype af heltalsfamilien.

Den korte int bruges for det meste til at gemme smรฅ tal, int bruges til at gemme heltalsvรฆrdier af gennemsnitlig stรธrrelse, og lang int bruges til at gemme store heltalsvรฆrdier.

Nรฅr vi vil bruge en heltalsdatatype, skal vi placere int foran identifikatoren, f.eks.

int age;

Her er alder en variabel af en heltalsdatatype, som kan bruges til at gemme heltalsvรฆrdier.

Flydende kommadatatype

Ligesom heltal kan vi i 'C'-programmet ogsรฅ gรธre brug af datatyper med flydende komma. Nรธgleordet 'float' bruges til at reprรฆsentere datatypen med flydende komma. Det kan indeholde en flydende decimalvรฆrdi, hvilket betyder, at et tal har en brรธkdel og en decimaldel. En flydende kommavรฆrdi er et reelt tal, der indeholder et decimalkomma. Heltalsdatatypen gemmer ikke decimaldelen, derfor kan vi bruge float til at gemme decimaldelen af โ€‹โ€‹en vรฆrdi.

Generelt kan en flyder holde op til 6 prรฆcisionsvรฆrdier. Hvis float ikke er tilstrรฆkkeligt, sรฅ kan vi gรธre brug af andre datatyper, der kan rumme store flydende kommavรฆrdier. Datatypen double og long double bruges til at gemme reelle tal med prรฆcision op til henholdsvis 14 og 80 bit.

Nรฅr du bruger et flydende kommanummer, skal et nรธgleord flydende/dobbelt/langt dobbelt placeres fรธr en identifikator. De gyldige eksempler er,

float division;
double BankBalance;

Karakterdatatype

Tegndatatyper bruges til at gemme en enkelt tegnvรฆrdi omsluttet af enkelte anfรธrselstegn.

En tegndatatype optager op til 1 byte hukommelsesplads.

Eksempel,

Char letter;

Ugyldig datatype

En ugyldig datatype indeholder eller returnerer ingen vรฆrdi. Det bruges mest til at definere funktioner i 'C'.

Eksempel,

void displayData()

Typedeklaration af en variabel

int main() {
int x, y;
float salary = 13.48;
char letter = 'K';
x = 25;
y = 34;
int z = x+y;
printf("%d \n", z);
printf("%f \n", salary);
printf("%c \n", letter);
return 0;}

Output:

59
13.480000
K

Vi kan deklarere flere variabler med samme datatype pรฅ en enkelt linje ved at adskille dem med et komma. Bemรฆrk ogsรฅ brugen af โ€‹โ€‹formatspecifikationer i printf outputfunktionerne float (%f) og char (%c) og int (%d).

Konstanter

Konstanter er de faste vรฆrdier, der aldrig รฆndres under udfรธrelsen af โ€‹โ€‹et program. Fรธlgende er de forskellige typer konstanter:

Heltalskonstanter

En heltalskonstant er intet andet end en vรฆrdi bestรฅende af cifre eller tal. Disse vรฆrdier รฆndres aldrig under afviklingen af โ€‹โ€‹et program. Heltalskonstanter kan vรฆre oktale, decimale og hexadecimale.

Decimalkonstanten indeholder cifre fra 0-9 som f.eks.

Example, 111, 1234

Ovenfor er de gyldige decimalkonstanter.

Oktal konstant indeholder cifre fra 0-7, og disse typer konstanter er altid 0 foran.

Example, 012, 065

Ovenfor er de gyldige oktale konstanter.

Hexadecimal konstant indeholder et ciffer fra 0-9 samt tegn fra AF. Hexadecimale konstanter indledes altid med 0X.

Example, 0X2, 0Xbcd

Ovenfor er de gyldige hexadecimale konstanter.

De oktale og hexadecimale heltalskonstanter bruges meget sjรฆldent i programmering med 'C'.

Karakterkonstanter

En tegnkonstant indeholder kun et enkelt tegn omsluttet af et enkelt anfรธrselstegn ('). Vi kan ogsรฅ reprรฆsentere tegnkonstanten ved at angive en ASCII-vรฆrdi.

Example, 'A', '9'

Ovenfor er eksempler pรฅ gyldige tegnkonstanter.

Strengkonstanter

En strengkonstant indeholder en sekvens af tegn omsluttet af dobbelte anfรธrselstegn ("").

Example, "Hello", "Programming"

Dette er eksemplerne pรฅ gyldige strengkonstanter.

Virkelige konstanter

Ligesom heltalskonstanter, der altid indeholder en heltalsvรฆrdi. 'C' giver ogsรฅ reelle konstanter, der indeholder et decimaltegn eller en brรธkvรฆrdi. De reelle konstanter kaldes ogsรฅ flydende kommakonstanter. Den reelle konstant indeholder et decimaltegn og en brรธkvรฆrdi.

Example, 202.15, 300.00

Disse er de gyldige reelle konstanter i 'Cยซ.

En reel konstant kan ogsรฅ skrives som,

Mantissa e Exponent

For for eksempel at erklรฆre en vรฆrdi, der ikke รฆndrer sig som den klassiske cirkelkonstant PI, er der to mรฅder at erklรฆre denne konstant pรฅ

Ved at bruge const-nรธgleordet i en variabeldeklaration, reserverer det en lagerhukommelse

#include <stdio.h>
int main() {
const double PI = 3.14;
printf("%f", PI);
//PI++; // This will generate an error as constants cannot be changed
return 0;}

Ved at bruge #define pre-processor-direktivet, som ikke bruger hukommelse til lagring, og uden at indsรฆtte et semikolon i slutningen af โ€‹โ€‹โ€‹โ€‹denne sรฆtning

#include <stdio.h>
#define PI 3.14
int main() {
printf("%f", PI);
return 0;}

Ofte Stillede Spรธrgsmรฅl

En variabel er en navngiven hukommelsesplacering, hvis vรฆrdi kan รฆndres under udfรธrelse. En konstant har en fast vรฆrdi, der aldrig รฆndres, nรฅr den fรธrst er defineret.

Nรธgleordet const opretter en typeskrevet, hukommelsesbaseret konstant, som compileren kontrollerer. #define er en prรฆprocessormakro, der erstatter tekst og ikke bruger nogen lagerplads.

En lokal variabel findes i en funktion og eksisterer kun, mens den kรธrer. En global variabel forbliver tilgรฆngelig i hele programmet via C. opbevaringsklasser.

En signeret type gemmer negative og positive vรฆrdier. En usigneret type gemmer kun ikke-negative vรฆrdier, hvilket fordobler det positive omrรฅde for det samme antal bytes.

Klassisk C havde ingen boolsk type; programmรธrer brugte int med 0 og 1. Siden C99, tilfรธjer bool, true og false gennem _Bool-typen.

Formatspecifikationer fortรฆller printf og scanf, hvordan data skal fortolkes. %d hรฅndterer heltal, %f hรฅndterer flydende kommatal, og %c hรฅndterer et enkelt tegn.

Ja. AI-kodningsassistenter foreslรฅr datatyper, advarer om vรฆrdier, der overskrider et interval, og markerer navne, der kolliderer med nรธgleord. Gennemgรฅ altid outputtet.

GitHub Copilot autofuldfรธrer variable og konstante deklarationer fra kommentarer eller nรฆrliggende kode. Den foreslรฅr navne og datatyper og udkast til const- eller #define-linjer, der skal gennemgรฅs.

Opsummer dette indlรฆg med: