What should be the sizeof(int) on a 64-bit machine?

Sangeeth Saravanaraj picture Sangeeth Saravanaraj · Apr 17, 2012 · Viewed 160.4k times · Source

Possible Duplicate:
size of int, long, etc
Does the size of an int depend on the compiler and/or processor?
What decides the sizeof an integer?

I'm using a 64-bit machine.

$ uname -m
x86_64
$ file /usr/bin/file
/usr/bin/file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
$ 

When I ran the following program, I got the sizeof(int) as 4-bytes.

#include <stdio.h>

int main(void)
{
    printf("sizeof(int) = %d bytes\n", (int) sizeof(int));

    return 0;
}

If I'm running a 16-, 32- and 64- bit machine, then doesn't it mean that the size of an integer is 16-, 32- and 64- bit respectively?

In my machine, I found the WORD_BIT is 32. Shouldn't it be 64 on a 64-bit machine?

$ getconf WORD_BIT
32
$ 

And, shouldn't the sizeof(int) be 64-bits (8 bytes) in the above case?

Answer

Eugene picture Eugene · Apr 17, 2012

Size of a pointer should be 8 byte on any 64-bit C/C++ compiler, but not necessarily size of int.