<p>As per c99 standard, size of <code>long long</code> should be minimum 64 bits. How is this implemented in a 32 bit machine (eg. addition or multiplication of 2 <code>long long</code>s). Also, What is the equivalent of <code>long long</code> in C++.</p>

If you care about bit-sizes, you should use
```
```
#include <stdint.h>

int32_t n;
```
```
and friends.  This works for C++ as well.
64-bit numbers on 32-bit machines are implemented as you think,
by 4 extra bytes.  You could therefore implement your own 64-bit
datatype by doing something like this:
```
```
struct my_64bit_integer {
    uint32_t low;
    uint32_t high;
};
```
```
You would of course have to implement mathematical operators yourself.
There is an int64_t in the stdint.h that comes with my GCC version,
and in Microsoft Visual C++ you have an __int64 type as well.