/* 03-001.c
 * La asignación como instrucción
 * La asignación como expresión
 * Preincremento y postincremento
 * Orden de evaluación de argumentos
 */
#include <stdio.h>
#include <stdlib.h>

int main (void)
{
  int a, b;
  
  a = 0;
  printf ("1: a: %d\n", a);

  a = a + 1;
  printf ("2: a: %d\n", a);

  a++;
  printf ("3: a: %d\n", a);

  ++a;
  printf ("4: a: %d\n", a);

  printf ("5: a++: %d\n", a++);
  printf ("6: a: %d\n", a);

  printf ("7: ++a: %d\n", ++a);
  printf ("8: a: %d\n", a);

  printf ("9: a++: %d; a: %d; a++: %d\n", a++, a, a++);
  printf ("10: a: %d\n", a);

  printf ("11: ++a: %d; a: %d; ++a: %d\n", ++a, a, ++a);
  printf ("12: a: %d\n", a);

  printf ("13: a+=1: %d; a+=1: %d; a+=1: %d\n", a+=1, a+=1, a+=1);
  printf ("14: a: %d\n", a);

  b = 4;
  printf ("15: b: %d\n", b);

  b = ++a;
  printf ("16: a: %d; b: %d\n", a, b);

  b = a++;
  printf ("17: a: %d; b: %d\n", a, b);

  printf ("18: %d\n", b = a++);

  system ("pause");
  return 0;
}