Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

c++

c

sizeof

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?

like image 632
Sangeeth Saravanaraj Avatar asked Apr 17 '12 18:04

Sangeeth Saravanaraj


People also ask

What is the return value of sizeof () in 64-bit machine?

So, the sizeof(int) simply implies the value of size of an integer. Whether it is a 32-bit Machine or 64-bit machine, sizeof(int) will always return a value 4 as the size of an integer.


1 Answers

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

like image 178
Eugene Avatar answered Oct 11 '22 22:10

Eugene