|
|
Знаете ли Вы, что ... | |
...для каждой темы существует свой раздел. Изучите структуру форума. Если соответствующего раздела нет, то всегда есть раздел "Разное" :) | |
<< Предыдущий совет - Случайный совет - Следующий совет >> |
C/C++, Прикладные вопросы Программирование на C++. No VCL, no MFC, pure C++ only. Прикладные библиотеки и компоненты для C или C++ и тому подобные вопросы. |
Ответить |
|
Опции темы | Опции просмотра |
23.02.2009 11:22 | #1 | ||
Вчера случайно заметил вот что
на vc++ 6.0 написал код Код:
#include <iostream.h> main() { cout<<"\n sizeof(char)="<<sizeof(char) <<"\n sizeof(int)=" <<sizeof(int) <<"\n sizeof(float)="<<sizeof(float) <<"\n sizeof(double)="<<sizeof(double)<<"\n"; } и проверил на TC++ 3.0 результат Плз, обьясните - почему на vc++ size int равно на 4 а TC++ 3.0 на 2, если кто то в курсе, искал в литературах не смог найти ничего |
|||
|
Ответить |
23.02.2009 14:06 | #2 | |
Google
software engineer
AKA:Y combinator
Сообщений: 418
+ 114
374/183
– 6
9/8
|
C++ никак не фиксирует размеры целых типов, они зависят от архитектуры компьютера. TC++ работает в 16-битном окружении DOS, VC++ — в 32-битном Windows, вот и всё.
В стандарте C++ (ISO/IEC 14882:2003) записано следующее: Цитата:
Таким образом, int должен иметь размер, с которым процессор данной архитектуры работает наиболее эффективно, а о размерах остальных типов утверждается лишь то, что: sizeof(char) ≤ sizeof(short) ≤ sizeof(int) ≤ sizeof(long) Размеры типов — это то, к чему следует относиться очень осторожно при переносе программ на другую архитектуру, и делать минимум предположений. Например, Visual C++ на x86-64 имеет sizeof(int) = sizeof(long) = 4 из соображений обратной совместимости, но при этом sizeof(T*) = 8 — глаз да глаз нужен :-) |
|
|
Ответить |
23.02.2009 14:25 | #3 | |
В C++ размер числовых типов зависит от компилятора. Соответственно, для 32-х битных сред (Visual C++) размер int - 4 байта (32 бита), для 16-битных (DOS, Turbo C++) - 2 байта. С этой странички на Википедии:
Цитата:
Оффтоп: Пока писал дали более верный и развёрнутый ответ
__________________
Веб-разработчик Последний раз редактировалось Andrew Sklyarevsky; 23.02.2009 в 14:27. |
||
|
Ответить |
23.02.2009 14:40 | #4 |
Просто я раньше уделял внимания на размерах типов в С++
По точнее 2004 году преподавал по краткому курсу С++ если не ошибаюсь там было всего 14 часов. И в этом курсе студенты изучали только поверхность языка: Введения, типи, оператор условия, циклы, функции, работа с массивами(В этом курсе не было ни слово о структурах, указателях, классах - но мы знаем основа С++ это классы). И я сама был новичком - 2002 коротко ознакомился структурой программы на С++. Вообщето в эти время писал проги на паскале или на Делфи. В этом году мне поручили вести занятия по полному курсу С++. Вчера случайно написал несколько проги для примера(по тему указатели). Я знал что указатели (не смотря его типу) занимает одно и то же память, по точнее равно к типу int. И в это же время заметил |
|
|
Ответить |
|