summaryrefslogtreecommitdiff
path: root/reference/C/EXAMPLES/inc_dec.c
blob: 76ba77620b8e9e0b333ef433522ed485f03c00f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/*************************************************************************
 *
 * Purpose: Demonstrate the increment and decrement operators.
 * 
 * Author:  M.J. Leslie.
 *
 * Date:    07-Apr-94
 *
 *************************************************************************/
main()
{

   		/*
    		 *	++i - i incremented before i is used.
    		 *	--i - i decremented before i is used.
    		 *	j++ - j is incremented AFTER j has been used. 
    		 *	j-- - j is decremented AFTER j has been used. 
    		 */

  int i=1,j=1;

  puts("\tDemo 1");
  printf("\t%d %d\n",++i, j++);			/* O/P 	2 1	*/
  printf("\t%d %d\n",i, j);				/* O/P  2 2	*/

  i=1;j=1;

  puts("\n\tDemo 2");
  printf("\t%d \n",i=j++);				/* O/P 	1	*/
  printf("\t%d \n",i=++j);				/* O/P 	3	*/


/************************************************************************

		This is a GOT YA

*************************************************************************/

   						  /* Consider this code */

  i = 0; j = 0;

  puts("\n\tDemo 3");
  if ( (i++ == 1) && (j++ == 1)) puts("Some text");

   	/* Will i and j get incremented? The answer is NO! Because 
     	 * the expression in the left of '&&' resolves to false the 
    	 * compiler does NOT execute the expression on the right and 
    	 * so 'j' does not get executed!!!!! */


  printf("\t%d %d\n",i, j);				/* O/P 1 0	*/

}