• Allt mellan Kommentarer /* och */ • Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn och kommentarer*/ #include <stdio.h> int main(void) { int x,y; x y x y ... } F2 = = = = 7; 3; 2*y; 5; /* /* /* /* x y x y får får får får värdet värdet värdet värdet 7 */ 3 */ 6 */ 5, x påverkas ej */ Programmeringsteknik, 4p vt-00 1 Identifierare • Får innehålla siffror, bokstäver (A..Z, a..z) och _ • Måste inledas med bokstav (A..Z, a..z) eller _ • Antalet särskiljande tecken varierar, i ANSI-C minst de 31 första • Identifierare som inleds med _ används i stort sett uteslutande för systemprogramändamål • Nyckelorden reserverade identifierare som ej kan omdefinieras. F2 Programmeringsteknik, 4p vt-00 2 Strängkonstanter • Omges av dubbelsnuttar ”hejsan” • ’a’ ≠ ”a” F2 Programmeringsteknik, 4p vt-00 3 Operatorer & skiljetecken • Aritmetiska operatorer (% resten vid heltalsdivision) • % kontextberoende int a=0;b=7; printf(”a=%i och b=%i”,a,b); a = b%3; • Operatorer , skiljetecken och blanktecken separerar element i språket F2 Programmeringsteknik, 4p vt-00 4 Prioritetsordning • I vilken ordning ett uttryck evalueras • Parenteser bryter denna ordning • Associativiteten avgör ordningen vid lika prioritet F2 Programmeringsteknik, 4p vt-00 5 ++ & -- • Unära operatorer för att öka resp. minska med ett • Både post- och prefix (ex. sid 85) • Bör användas mycket försiktigt! F2 Programmeringsteknik, 4p vt-00 6 Tilldelningsoperatorn • Lägst prioritet • Associerar höger-vänster • Variabel på vänster sida • Uttryck på höger sida (Obs! typerna) F2 Programmeringsteknik, 4p vt-00 7 #include • alla rader som inleds med # är direktiv till preprocessorn • include fungerar som ”klistra in”/paste i ett ordbehandlingsprogram • Primära syftet är att tillhandahålla funktionsprototyper i t.ex. stdio.h finns bl.a. följande prototyper : extern int printf (const char *format, ...); extern int scanf (const char *format, ...); • Koden för dessa funktioner är redan kompilerad och läggs till i ett senare skede F2 Programmeringsteknik, 4p vt-00 8 Datatyper • Värdemängd [-128,…,127] (konstanter) F2 • Operationer [+,- *,/,%….] • Relationer [<,>,<=,….] • Egenskaper [udda,jämna] Programmeringsteknik, 4p vt-00 9 Datatyper • Minnet uppbyggt av bytes (8 informationsbitar) • Varje byte finns i en minnesadress • I en byte lagras ett bitmönster Hur skall ett bitmönster tolkas? Positivt binärt tal (0..255) Binärt tal med tecken (-128..+127) F2 Programmeringsteknik, 4p vt-00 10 Datatyper i C F2 typ bytes bitar char minst 1 minst 8 talomrde signed -128...127 short minst 2 minst 16 -32000...32000 int minst 2 minst 16 -32000...32000 long minst 4 minst 32 -2 miljarder...2 miljarder Programmeringsteknik, 4p vt-00 11 forts. datatyper F2 typ bytes bitar char minst 1 minst 8 talomrde unsigned 0...255 short minst 2 minst 16 0...65000 int minst 2 minst 16 0...65000 long minst 4 minst 32 0...4 miljarder Programmeringsteknik, 4p vt-00 12 Mer än en byte • unsigned måste anges, men signed är automatisk • Flyttal – float – double – long double • Tecken – Char F2 Programmeringsteknik, 4p vt-00 13 Tecken & typen char • Alla uppräkningsbara typer (integral type) är heltal • Alla sådana kan anv. för att representera tecken ’4’, ’.’, ’ä’… • En variabel av typen char kan lagra ett litet heltal (1 byte - men längden odef. I C) • Oftast 8 bitar ->256 distinkta värden • ASCII - numrering av teckenuppsättningen (app. D s.703) F2 Programmeringsteknik, 4p vt-00 14 ... & typen char • Variabler av typen char, kan delta i aritmetiska ber. char c; c = ’5’; printf(”%i %i %i”,c,c+1,c+2); • I utskrifter kan man välja format, och få antingen ASCIIvärdet eller tecknet F2 Programmeringsteknik, 4p vt-00 15 /* * testar fenomenet med tecken som heltal */ exempel På min Mac! #include <stdio.h> int main(void) { unsigned char c = 'z'; /* med unsigned fungerar det!! */ printf(”I ASCII-tabellen ? z -> %c %c %c \n\n",c+1,c+2,c+3); c = ’å’; printf("ord('å')=%u ",c); c = ’ä’; printf("ord(’ä')=%u ",c); c = ’ö’; printf("ord(’ö')=%u ",c); } F2 return 0; Programmeringsteknik, 4p vt-00 16 Heltal & flyttal • int är den ”normala” heltalstypen (char, short, long, unsigned) • Suffix används för att ange heltalstypen för en konstant (u,l,ul) • Flyttalstyperna: float, double, long double (double default för konstanter) F2 Programmeringsteknik, 4p vt-00 17 Representation av flyttal • Normaliserat • Signifikanta siffror • Exponentdel F2 Programmeringsteknik, 4p vt-00 18 Operatorn sizeof • För att ta reda på hur många bytes som reserverats för ett objekt – typer – variabler – uttryck • Garanterat att char ≤ short ≤ int ≤ long float ≤ double ≤ long double F2 Programmeringsteknik, 4p vt-00 19 getchar & putchar • Används för att läsa resp. skriva ett tecken i taget • EOF definieras i stdio se ex. s.124 F2 Programmeringsteknik, 4p vt-00 20 Matematiska funktioner • Finns i bibliotek • Inkluderas med #include math.h • Argumentet & resultatet av typen double • int abs(int) (i stdlib.h) • double fabs(double) (i math.h) F2 Programmeringsteknik, 4p vt-00 21 Typkonvertering • Flera slag av implicit konv. i uttryck • cast - explicit konvertering (typ) • Obs! cast operatorn är unär och har samma prioritet som övriga unära op. F2 Programmeringsteknik, 4p vt-00 22