Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 4 of 4
  1. #1
    New to the CF scene
    Join Date
    Sep 2012
    Posts
    1
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Exclamation Simple c program-please explain output.

    Code:
    int main()
    {
         int a=7, t=0;
         t=--a+--a+a+++a;
         printf("%d",t);
    }
    output: 20

    I could not understand why it prints '20' ? please explain it !
    Last edited by hitesh.incept; 09-13-2012 at 10:43 AM.

  • #2
    Regular Coder DELOCH's Avatar
    Join Date
    Apr 2006
    Location
    Canada
    Posts
    537
    Thanks
    4
    Thanked 2 Times in 2 Posts
    a=7
    t=(--a)+(--a)+(a++)+a;
    =6 + 6 + 0 + 8 = 20

    a++ becomes 0 in that situation for some reason which I do not understand
    Last edited by DELOCH; 09-26-2012 at 06:32 AM.

  • #3
    New to the CF scene
    Join Date
    Oct 2012
    Posts
    9
    Thanks
    0
    Thanked 4 Times in 4 Posts
    I believe the pre-decrement (or increment) will happen entirely before the final calculation. The post-increment (or decrement) will happen after the calculation. Thus:

    a=7;
    two decrements happen first and a=5 and the increment happens after the calculation;
    so: 5 + 5 + 5 + 5 = 20.

    The value of 'a' after the calculation is a=6.

    If you instead did:
    t=--a+--a+a+++a+++a;
    the value of t=25 (5+5+5+5+5) and a=7.

  • #4
    New to the CF scene
    Join Date
    Oct 2012
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts
    You are essentially doing this-

    Code:
    int main()
    {
             int a=7, t=0;
    	 --a;
    	 --a;
    	 
             t=a;
    	 t+=a;
    	 t+=a;
    	 t+=a;
    	 
    	 a++;
    	 
             printf("%d",t);
    }


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •