De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie.

Verwante presentaties


Presentatie over: "Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie."— Transcript van de presentatie:

1 tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie

2 Meer operatoren s= s+i; is identiek aan s+=i; i=i+1; is identiek aan i++; (increment) j=j-1; is identiek aan i--; (decrement) eerst i gebruiken,daarna verhogen i=i+1; is identiek aan ++i; (increment) j=j-1; is identiek aan --i; (decrement) eerst i verhogen daarna i gebruiken

3 Meer Operatoren i=5 ; k=(j=3)+(++i) geeft i=6;j=3;k=9; i=5 ; k=(j=3)+(i++) geeft i=6;j=3;k=8; ++ en -- hebben hoogste prioriteit k=i---j is k=(i--)-j de - is een unaire operator ( de + niet) x=-5; is correct x=+5; is fout

4 Meer operatoren assignment operatoren: += -= *= /= x = x*3; is identiek aan x*=3; hebben de laagste priotiteit i-=j + k; is identiek aan i-=(j+k); is identiek aan i= i - (j+k);

5 Bit manipulatie & logische en bitsgewijs | logische of bitsgewijs ^ exclusief of bitsgewijs << schuiven naar links >> schuiven naar rechts ~1-complement (unaire operator

6 Bitmanipulatie 23 & 26 logisch and binair: 00010111 = 23 ( 8bit) 00011010 = 26 ( 8 bit) -------------------- & 00010010 = 18 ( 8bit)

7 Conditionele expressies 1. If ( a< b) z=a+1 ; else z= b-1; 2. 3. Korter: 4. z = a< b ? a+1 : b-1

8 Komma operator S=0; while ( scanf(“%d”, &n), n> 0 ) s+=n; 3 acties: 1. lezen getal (scanf) 2. de test n>0 in het midden 3. het verhogen van s met n De expressie evalueren van links naar rechts, de laatste bepaalt de waarde

9 Associativiteit a - b - c = (a -b) -c de binaire operator - associeert van links naar rechts alle andere associeren van rechts naar links a < b ? p : c < d ? q : r is gelijk aan: a < b ? p : ( c< d ? q : r )

10 Overzicht operatoren

11

12 Array Int a[100] declaratie van een array van 100 elementen a[0], a[1] … a[99] De lengte(100) ligt nu vast in het geheugen en is niet te wijzigen tijdens run-time Evt constante declaratie mogelijk met : #define N 100 int a[N]

13 Pointers Scanf(“%d %d” &a, &b ) Hierin zijn &a en &b pointers. De waarde van &a en &b zijn adressen Een andere unaire operator is *, het tegengestelde van & Als p een pointer is naar de variable v geldt: p = &v p is het adres van v v = *p *p is de inhoud van adres v (is v)

14 Pointers adresinhoud 2000 …… 3000 3000 = p ( &v = adres van v) ……….. 123 = v ( *p = inhoud van adres v) 3000 is pointer p 2000 en 3000 zijn willekeurige adressen 123 is de waarde van v

15 Pointer Declaratie: int *p, v v=123 ; p = &v; *p = het object waar p naar wijst is een integer. De waarde van *p is nu 123 *p = 987 ; printf( “ %d”, v) Nu wordt 987 afgedrukt

16 Pointer en Array int a[100] *a is a[0] *(a+1) is a[1]...... *(a+99) is a[99] of a+i = &a[i]

17 Pointers en parameters 1. main() 2. { int v ; f(&v); 3. printf(“%d\n”, v); 4. } 5. f(p) int *p ; 6. { *p =123;) } C kent alleen value parameters, maar met pointers kunnen we ook adressen overdragen ( call by reference)

18 Pointers for (i=0 ; i < 10 ; i++ ) printf(“%d”, a[i]); is gelijk aan for (i=0 ; i < 10 ; i++ ) printf(“%d”, *(a+i)); Men kan een integer van een adres aftrekken Bijv: &a[9] – 3 ( = &a[6] = a+6 ) Ook &a[9] - &a[6] levert 3 op. Andere rekenkundige bewerkingen zijn niet toegestaan.

19 Types C kent de volgende elementaire types char, int, long int (long), short int ( short) unsigned int (unsigned), float,double lengte (short) < lengte (int) < lengte (long) float en double zijn floating point getallen

20 Typeconversie int i ; float f ; char ch ; long l; double d; f+i  i wordt naar float geconverteerd ch + i is mogelijk, ‘A’ + 2 = 65 +2 = 67 = ‘C’ 65 is de ASCII waarde van ‘A’ f = 3.14 + ‘A’ = 3.14+65 = 68.14 (char  float) f= 5.9 ; i=f  i= 5 ( afgekapt) l=45 ; i= l geeft een fout resultaat

21 Cast- operator Naast impliciete conversie kennen we expliciete conversie ( Cast operator) int i ; i=12 ; printf(“%5.3f/n”, float(i)); levert: 12.000 ( totaal 5 karakters, 3 achter de komma) (float) heet een cast operator

22 Huiswerk les 2 Maak de opgaven 4.1-4.2 uit modulewijzer Maak de opgaven 5.1-5.2 uit modulewijzer Maak de opgaven 6.1-6.2 uit modulewijzer Bestudeer Hfdst 7,8,9 uit C-boek


Download ppt "Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie."

Verwante presentaties


Ads door Google