C ReferencCard

Innehållsförteckning


Nyckelord för programflödesstyrning

Nyckelorden i ett programmeringsspråk är de ord som används för att ange vad språket skall utföra. Nyckelorden i C är reserverade, vilket innebär att de inte får användas för andra ändamål tex. som variabelnamn.

Slingor (loopar)for while do
Beslut och valif else switch case default
Programhopp (förgreningar)break continue goto
Datatyperchar int short long unsigned float double struct union typedef enum
Lagringsklasserauto extern register static
Diversereturn sizeof
Finns endast i vissa versionerentry asm endasm fortran

Programflödesstyrning

I C finns det ett antal kommandon för att styra flödet i ett program:
break
break;
  
break används om man vill "bryta sig ur" en slinga eller switch sats. Programmet hoppar helt enkelt över resten av slingan/switch satsen och fortsätter med raderna efteråt. ref_break.c
continue
continue;
  
continue kan användas ihop med dom 3 sling/loop satserna men inte med switch satsen. Kommandot medför att programmet hoppar över dom efterföljande programraderna i slingan. I en for- eller while-slinga startar nästa "slinga" medans i en do ... while slinga utgångsvilkoret att testas och forsätter därefter i slinga om så behövs. ref_continue.c
do ... while
do
  sats;
while ( uttryk )
  
Satsen do while utför slingan så länge uttryck är sant. Satsen ger en slinga med utgångsvilkor vilket innebär att slinga alltid körs minst en gång innan uttryck beräknas och testas. Jämför med while satsen där uttryck beräknas och testas innan slingan utförs. ref_do.c
for
for(initiera; test; räknaupp)
  sats;
  
Satsen for används tillsammans med 3st styryttryck, skilda med semicolon, för att styra slingan. Uttrycket initiera utförs en gång innan slingan börjar, om uttrycket test är sant (inte lika med 0) så utförs slinga en gång, sedan utförs uttrycket räknaupp. ref_for.c
goto
goto namn
.
.
namn:
  
Satsen goto används ytterst sällan, du kan i princip glömma att den finns :-), i dom flesta fallen så behövs inte goto (har aldrig behövt använda den!). Enda anledningen till att den finns är om man har nästlat in sig i slingor och break inte hjälper. goto hoppar till den angivna labeln och fortsätter därifrån. Labeln kan var både för och efter goto satsen.
if
if (uttryck)
  sats1;

if (uttryck)
  sats1;
else
  sats2;
  
Om uttryck är sant så kommer sats1 att utföras, annars kommer sats2 att utföras om det är else varianten (variant 2) används. ref_if.c
switch
switch ( uttryck ) {
  case värde1 : sats1
  case värde2 : sats2
  .
  .
  default : satsX
}
  
Programmet hoppar till den satsen/raden med det värde lika med uttryckets värde. Och fortsätter därifrån och utför satserna i efterföljande "case" rader. Om inget värde passar in så hoppar programmet till raden "default" om den finns annars hoppar den till raden efter switch satserna.

OBS värde kan inte vara variabler eller beräknade uttryck utan måste vara konstanter.

ref_switch.c
while
while(uttryck)
  sats;
  
Satsen while skapar en slinga som upprepar sig själv så länge villkoret uttryck är sant (inte lika men 0). Eftersom villkoret testas vid början av slingan så kan det bli så att om uttrycket är falsk från början så utförs inte slinga. ref_while.c

Variabel typer

Följande variabeltyper finns i C/C++, hur många bytes dom tar och vad dom kan innehålla (upp till 32bits kompilatorer, värden kan ändra sig på 64bits kompilatorer/maskiner):
TypeBytesMinMax
char1-128127
unsigned char10255
short2-3276832767
unsigned short2065535
int14-21474836482147483647
unsigned int1404294967295
long4-21474836482147483647
unsigned long404294967295
float4? (ca: -1032)? (ca: -1032)
double8? (ca: -10300)? (ca: 10300)
1int är lite speciell eftersom den inte har en fast definition! Definitionen av int är att den är större eller lika stor som short och mindre eller lika stor som long! (short =< int <= long)