Suppose here address of a=1000
Now See &a+1=1000+30*20*10*4=25000
See Next statement
printf("%ld",&a+1 - &a);
Here subtraction is
Final Result = ((a+1) - (a)) / Size of (a)
So here Output=25000-1000/24000
=1
Alternatively:
&a+1 - &a
We need to do this subtraction only. Thing is when we use '&' we get a pointer and so everything else becomes pointer arithmetic and not integer arithmetic. But pointer arithmetic is so simple if one applies logic (less rules and cases).
&a + 1 - adds sizeof(a) to address of a (true for any datatype a)
x - &a - finds the no. of elements of type a that can come between the addresses x and &a or is equivalently ((int)x - (int)(&a))/sizeof(a)
So, totally we get in terms of integer arithmetic
(&a + sizeof(a) - &a)/sizeof(a) = 1.