Output of C Programs | Set 15
Predict the output of below C programs.
Question 1
C
#include<stdio.h> int main( void ) { int a = 1; int b = 0; b = ++a + ++a; printf ( "%d %d" ,a,b); getchar (); return 0; } |
Output: 3 6
Explanation: ++ has precedence over + and operates right to left. Hence rightmost ++a gives a=2 and the ++a left of it gives a=3. Now, while evaluating, b=3+3. As after the second ++a, we have a=3. Hence b=3+3=6 and a=3. Hence the output.
Question 2
C
#include<stdio.h> int main() { int a[] = {1, 2, 3, 4, 5, 6}; int *ptr = ( int *)(&a+1); printf ( "%d " , *(ptr-1) ); getchar (); return 0; } |
Output: 6
&a is address of the whole array a[]. If we add 1 to &a, we get “base address of a[] + sizeof(a)”. And this value is typecasted to int *. So ptr – 1 points to last element of a[]
Please write comments if you find any of the answers/explanations incorrect, or you want to share more information about the topics discussed above.
Please Login to comment...