2011-12-19 2 views
0
#include<stdio.h> 

int main() 
{ 
     int x = 1,*t; 
     float y = 1.50,*u; 
     char k = 'c',*v; 

     t = &x; 
     u = &y; 
     v = &k; 

     printf("%p %p %p", t, u, v); 

     t++; 
     u++; 
     v++; 

     printf(" %p %p %p", t, u, v); 

     return 0; 
} 

Привет я сделал этот код, но здесь что-то необычное происходит, я печать адреса, когда я увеличиваю адрес всех, то от моего прироста зрения в Int будет , поплавок будет и символ будет , но я получил следующее:Int Адрес в памяти увеличивается на 4

0xbffa6ef8 0xbffa6ef0 0xbffa6eff 0xbffa6efc 0xbffa6ef4 0xbffa6f00 

Для поплавка и полукокса я думаю, что его правильно, но для Int я не знаю, почему он дает так

+0

Почему вы думаете, 'int' должны быть только 2 байта? Вы только что доказали, что это 4 (что вполне нормально - 'int' - 32 бита на большинстве платформ). С другой стороны, «короткий» может иметь ширину 2 байта ... – Mac

ответ

2

Вы считаете, что sizeof(int) является 2 вашей системой/envrionment.

Однако, Ваше предположение неверно. Стандарт не требует, чтобы размер int был 2 или что-то конкретное.

Как ваша программа показывает размер int является 4 вашей системой/envrionment.

Урок в ЖЖ:
Никогда не полагайтесь или принимать на размер типа, всегда использование sizeof для определения размера, что является причиной стандарт обеспечивает sizeof.

1

Адрес приращение памяти t дается sizeof(int).

Если sizeof(int) отличается от того, что вы ожидаете от t, то ваше предположение неверно.

1

Тип данных int обычно составляет 4 байта. a short или short int тип данных - 2 байта;

1

Фактический размер целочисленных типов зависит от реализации. Единственная гарантия заключается в том, что длинный длинный не меньше длинного, который не меньше, чем int, который не меньше короткого.

или

SizeOf (короткое целое) < = SizeOf (INT) < = SizeOf (длинный ИНТ)


Но вы можете быть уверены, что это будет по меньшей мере 16 бит.


Это будет полезно, detailed informations regarding the size of basic C++ types.