#include static void out(char *m ,int i) { printf("%s = %i \n",m,i); } static void out1(char *m) { printf("%s \n",m); } static void test(); int main() { test(); } static int id (int a) { return a; } static int somme(int a, int b) { return a + b; } static void test() { int a; out1("Associativite gauche de + (ambiguite syntaxique)"); a=1; out("a + (++a + ++a)", a + (++a + ++a) ); a=1; out("( a + ++a ) + ++a", ( a + ++a ) + ++a ); a=1; out("a + ++a + ++a", a + ++a + ++a); a=1; out("++a + a + ++a", ++a + a + ++a); a=1; out("++a + ++a + a", ++a + ++a + a); out1("Priorite egale de + et -"); a=1; out("a + ++a - ++a + a", a + ++a - ++a + a); a=1; out("a + ( ++a - ++a) + a", a + (++a - ++a) + a ); a=1; out("a - ++a + ++a - a", a - ++a + ++a - a ); a=1; out("a - ( ++a + ++a) - a", a - (++a + ++a) - a ); out1("commutativite de + (ambiguite semantique), indetermine en C"); a=1; out("id(a) + ++a", id(a) + ++a ); a=1; out("++a + id(a)", ++a + id(a) ); out1("Ordre Evaluation des arguments, indetermine en C"); a=1; out("somme(++a,a)", somme(++a,a) ); a=1; out("somme(a,++a)", somme(a,++a) ); a=1; out("somme(id(++a),a)", somme(id(++a),a) ); a=1; out("somme(a,id(++a))", somme(a,id(a++)) ); out1("Priorite du - unaire"); a=1; out("-(++a*++a)", -(++a*++a) ); a=1; out("(-++a)*++a", (-++a)*++a ); a=1; out("-++a*++a ", -++a*++a ); }