Predict the output of below C programs.
Question 1
#include<stdio.h>int main(void){ int a = 1; int b = 0; b = ++a + ++a; printf("%d %d",a,b); getchar(); return 0;} |
#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[]
&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.
No comments:
Post a Comment