Because the manual, in the 'Variables' entry, in the variable-types table, it states that int & long use 4 bytes, not 8!
You're right about this, my bad. Sorry, too much java programming.

For the rest. I am pretty sure about this. But my c/c++ expertise is limited. Maybe someone else with more experience can jump in?
Basically you can test the size of any type with the following code snippet:
#include <acknex.h>
int main()
{
printf("%d",(long)sizeof(long*));
}