File: Stare vježbe/vjezbe03/16__sloz_op_pridruzivanja.c

  1. /*
  2.   16__sloz_op_pridruzivanja.c
  3.   Operatori ++, --, +=, -=, *=, /=, %=
  4. */
  5.  
  6. #include <stdio.h>
  7.  
  8. int main ()
  9. {
  10. int a, b;
  11.  
  12. /* a++ ili ++a --> a=a+1
  13.   a-- ili --a --> a=a-1 */
  14.  
  15. a=5; a++;
  16. printf ("(1) a=%d\n", a);
  17. b=16; --b;
  18. printf ("(2) b=%d\n", b);
  19.  
  20. /* prefix forma: ++a --> vrijednost od a se prvo poveca za 1 i onda
  21.   uvrsti u pripadni izraz */
  22. a=5;
  23. b=++a;
  24. printf ("(3) a=%d b=%d\n", a, b);
  25.  
  26. /* postfix forma: a++ --> vrijednost od a se prvo uvrsti u pripadni
  27.   izraz i tek onda uveca za 1 */
  28. a=5;
  29. b=a++;
  30. printf ("(4) a=%d b=%d\n", a, b);
  31.  
  32. /* nemojte raditi ovo -- standard ne propisuje sto treba biti rezultat */
  33. a=5;
  34. b=(++a)*(--a);
  35. printf ("(5) b=%d\n", b);
  36.  
  37. /* a+=izraz --> a=a+(izraz)
  38.   a-=izraz --> a=a-(izraz)
  39.   a*=izraz --> a=a*(izraz)
  40.   a/=izraz --> a=a/(izraz)
  41.   a%=izraz --> a=a%(izraz) */
  42.  
  43. a=5; b=10;
  44. b*=a+b;
  45. printf ("(6) b=%d\n", b);
  46.  
  47. /* operator pridruzivanja je desno asocijativan bin. operator koji
  48.   vraca vrijednost izraza koji se pridruzuje
  49.   a=b=17 -> (desna asoc) -> a=(b=17)
  50.   vrijednost pridruzivanja (b=17) je 17 i to se upisuje u varijablu a */
  51.  
  52. a=b=17;
  53. printf ("(7) a=%d b=%d\n", a, b);
  54.  
  55. /* nemojte raditi ovo -- standard ne propisuje sto treba biti rezultat */
  56. a=5;
  57. b=(a=a+2)*(a=a-1);
  58. printf ("(8) a=%d b=%d\n", a, b);
  59.  
  60. return 0;
  61. }
  62.