What should be the sizeof(int) on a 64

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 bytesn", (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?


Doesn't have to be; "64-bit machine" can mean many things, but typically means that the CPU has registers that big. The sizeof a type is determined by the compiler, which doesn't have to have anything to do with the actual hardware (though it typically does); in fact, different compilers on the same machine can have different values for these.


在任何64位C / C ++编译器中,指针的大小应为8字节,但不一定是int大小。


Not really. for backward compatibility it is 32 bits.
If you want 64 bits you have long , size_t or int64_t

链接地址: http://www.djcxy.com/p/40392.html

上一篇: 什么决定C中整数的大小?

下一篇: 64应该是sizeof(int)