1. When compiling a 64bit app, does it mean that some data types such as unsigned long int will be able to hold more? So rather then being a 32bit variable it would be 64bit?

2. Also can you compile a 64 bit app under a 32 bit OS and still run it?

3. And lastly, if no to question 2, assuming a 64-bit platform in linux or windows, what are the steps to compile a program as a 64 bit program? (without using platform dependent stuff like .net)