Programmering i ANSI-C


Tabeller

redigera

Tabellerna är en referenssamling till boken "Programmering i ANSI-C". Här är det tänkt att det snabbt och lätt skall gå att få information om olika funktioner inom programspråket.

Nyckelord i ANSI-C

redigera
Nyckleord i bokstavsordning :
auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, siezof, static, struct, switch, typedef, union, unsigned, void, volatile, while.

Tabellen ovan listar samtliga nyckeord som ingår i ANSI-C standarden. Nyckelorden kan delas in några grupper. Egentligen så ingår väl alla i den första gruppen, dom andra två kan ses som undergrupper.

Nyckleord som är kompilatordirektiv : Nyckleord som anger datatyper : Nyckleord för styrning av programmets flöde :
auto, case, enum, extern, register, static, struct, typedef, union, volatile. char, const, double, float, int, long, short, signed, siezof, static, unsigned, void. break, case, continue, default, do, else, for, goto, if, return, switch, while.

Teckenuppsättning

redigera

Siffror stora och små bokstäver, (0-9, A-Z, a-z) används för att namnge funktioner, pekare, hoppadresser i källkoden, makron samt variabler. Siffror (0-9) används även för att ange adresser och belopp, (flyttal med decimalpunkt, "0.0").

Logiska operatorer : Jämförelseoperatorer : Tilldelningsoperatorer :
Binära operatorer:

! NOT, ICKE
& AND, OCH
| OR, ELLER
^ XOR, EXKLUSIVT ELLER
~ INV inverterare
Booleska operatorer:
! NOT, ICKE
&& AND, OCH
|| OR, ELLER

== Lika med

!= Skilt från, (ICKE lika med)
< Mindre än
> Större än
<= Mindre än eller lika med
>= Större än eller lika med

= Direkt tilldelning


Sammansatta tilldelare:
+= Addera till
-= Dra ifrån
*= Multiplicera med
/= Dividera med
%= Rest från heltalsdivision (MOD)
<<= Vänsterskifta
>>= Högerskifta
&= Binär AND
|= Binär OR
^= Binär XOR

Dom sammansatta tilldelningarna är ett förkortat skrivsätt för en logisk eller aritmetisk operation på måloperanden, "operand 0 *= operand 1" ger samma resultat som "operand 0 = operand 0 * operand 1".

Aritmetiska operatorer : Tecken för att stukturera källkoden : Övriga tecken :
+ Addition (plus)

- Subtraktion (minus)
* Multiplikation
/ Division
++ Öka med 1
-- Minska med 1
<< Vänsterskiftning (   )
>> Högerskiftning (   )
. Decimalpunkt vid flyttal

{ } Omger kommandoblock ¹

( ) Omger parameterblock ¹
" " Omger strängar
'' '' Omger ASCII tecken
/* */ Omger kommentarer

; Anger radslut

, Anger raddelning
* Anger pekare
[ ] Anger adressindex
_ Separator i variabelnamn
: Anger bitfält
. Namnseparator
-> Namnseparator ²
# Föregår preprocessordirektiv

¹ Parenteserna "{ }" och "( )" är möjliga att nästla inom varandra i ett obegränsat antal, ex; "f0 ( f1 ( ... ) )".

² "structnamn->medlemsnammn" är ett förkortat / alternativt skrivsätt för "(*structnamn) .medlemsnamn".

Prioritetsordningar för operatorer

redigera
Hög prioritet :
() [ ] -> . sizeof

++ -- ~ ! & * (type) + -
* / %
+ -
<< >>
< <= > >=
== !=
& ^ |
&& ||
?:
= += -= *= /= %= >>= <<= &= ^= |=
,

: låg prioritet.

Operatorer på samma rad prioriteras i läsordningen (->). Vill man bryta ordningen brukas en vanlig parentes "( )", ex; 4 * 6 - 3 = 21, 4 * ( 6 - 3 ) = 12.

Talomvandling vid utskrift

redigera
Typomvandlare vid utskrift med "printf" :
c, char, infogar enstaka tecken


d, som i
Ld, som Li

E, double, flyttal på exponentform
LE, long double, i övrigt som E
e, ger litet "e" i resultattexten i övrigt som E
Le, long double, i övrigt som e

f, double, flyttal på decimalform
Lf, long double, i övrigt som f

G, double, om stor exponent som E annars som f
LG, long double, i övrigt som G
g, double, om stor exponent som e annars som f
Lg, long double, i övrigt som g

i, int, heltal på decimal form
Li, long int, annars som i

o, unsigned int, heltal på oktal form
Lo, unsigned long int, annars som o

s, char, infogar strängar.

u, unsigned int, heltal på decimal form
Lu, unsigned long int, annars som u

x, unsigned int, heltal på hexadecimal form, gemena a-f
Lx, unsigned long int, annars som x
X, versaler A-F i övrigt som x
LX, versaler A-F i övrigt som Lx

Koderna används vid omvandling från ett binärt talformat till ASCII strängar. Det görs normalt direkt till standardströmmen med "printf" men det är även möjligt att välja vilken ström som avses med funktionen "fprintf" eller operera på predefinerade strängar i minnet med funktionen "sprintf".

Talomvandling vid inmatning

redigera
Typomvandlare vid inmatning med "scanf" :
c, char, tecken (vanligtvis 8 bit ASCII)


d, int, heltal på decimal form
hd, short int, i övrigt som d
ld, long int, i övrigt som d

e, float, reella tal på decimal form
le, double, i övrigt som e
Le, long double, i övrigt som e

f, som e
lf, double, i övrigt som e
Lf, long double, i övrigt som e

g, som e
lg, double, i övrigt som e
Lg, long double, i övrigt som e

o, int, heltal på oktal form
ho, short int, i övrigt som o
lo, long int, i övrigt som o

s, char[], sträng i övrigt som c

u, unsigned int, heltal på decimal form
hu, unsigned short int, i övrigt som u
lu, unsigned long int, i övrigt som u

x, int, heltal på hexadecimal form
hx, short int, i övrigt som x
lx, long int, i övrigt som x

Koderna används vid omvandling från ASCII strängar till ett binärt talformat. Det görs normalt direkt från standardströmmen med "scanf" men det är även möjligt att välja vilken ström som avses med funktionen "fscanf" eller operera på predefinerade strängar i minnet med funktionen "sscanf".

Standardbibliotek

redigera
Standardbibliotek som ingår i ANSI-C :
  • assert.h
  • ctype.h
  • float.h
  • limits.h
  • locale.h
  • math.h
  • setjmp.h
  • signal.h
  • stdarg.h
  • stddef.h
  • stdio.h
  • stdlib.h
  • string.h
  • time.h

För en närmare beskrivning se: Standardbibliotek.