uForum.uz

uForum.uz (https://uforum.uz/index.php)
-   C/C++, Прикладные вопросы (https://uforum.uz/forumdisplay.php?f=162)
-   -   Непонятные результаты (https://uforum.uz/showthread.php?t=8037)

Botirbek Samandarov 23.02.2009 11:22

Непонятные результаты
 
Вчера случайно заметил вот что
на 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";
}

результат
http://img.uz/thumbs/619802vc60_rez.JPG

и проверил на TC++ 3.0 результат
http://img.uz/thumbs/428696tc30_rez.JPG

Плз, обьясните - почему на vc++ size int равно на 4 а TC++ 3.0 на 2, если кто то в курсе, искал в литературах не смог найти ничего

Rooslan Khayrov 23.02.2009 14:06

C++ никак не фиксирует размеры целых типов, они зависят от архитектуры компьютера. TC++ работает в 16-битном окружении DOS, VC++ — в 32-битном Windows, вот и всё.
В стандарте C++ (ISO/IEC 14882:2003) записано следующее:
Цитата:

3.9.1/2
There are four signed integer types: “signed char”, “short int”, “int”, and “long int.” In this list, each type provides at least as much storage as those receding it in the list. Plain ints have the natural size suggested by the architecture of the execution; the other signed integer types are provided to meet special needs.
Хотя стандарт был принято много позже появления TC++ 3.0 и даже VC++ 6.0, в этой части отражено реальное положение вещей в подавляющем большинстве существующих компиляторов.
Таким образом, int должен иметь размер, с которым процессор данной архитектуры работает наиболее эффективно, а о размерах остальных типов утверждается лишь то, что:
sizeof(char) ≤ sizeof(short) ≤ sizeof(int) ≤ sizeof(long)

Размеры типов — это то, к чему следует относиться очень осторожно при переносе программ на другую архитектуру, и делать минимум предположений. Например, Visual C++ на x86-64 имеет sizeof(int) = sizeof(long) = 4 из соображений обратной совместимости, но при этом sizeof(T*) = 8 — глаз да глаз нужен :-)

Andrew Sklyarevsky 23.02.2009 14:25

В C++ размер числовых типов зависит от компилятора. Соответственно, для 32-х битных сред (Visual C++) размер int - 4 байта (32 бита), для 16-битных (DOS, Turbo C++) - 2 байта. С этой странички на Википедии:

Цитата:

Note: C++ has no compiler-independent integer types with fixed bit widths.
Оффтоп:
Пока писал дали более верный и развёрнутый ответ :)

Botirbek Samandarov 23.02.2009 14:40

Просто я раньше уделял внимания на размерах типов в С++
По точнее 2004 году преподавал по краткому курсу С++ если не ошибаюсь там было всего 14 часов. И в этом курсе студенты изучали только поверхность языка: Введения, типи, оператор условия, циклы, функции, работа с массивами(В этом курсе не было ни слово о структурах, указателях, классах - но мы знаем основа С++ это классы). И я сама был новичком - 2002 коротко ознакомился структурой программы на С++. Вообщето в эти время писал проги на паскале или на Делфи.
В этом году мне поручили вести занятия по полному курсу С++. Вчера случайно написал несколько проги для примера(по тему указатели).
Я знал что указатели (не смотря его типу) занимает одно и то же память, по точнее равно к типу int.
И в это же время заметил

Vladislav Gubenko 23.03.2010 19:43

Не хочу открывать новую тему, поэтому пишу здесь:
нужен программист, который напишет на С++ программу для сжатия аудиоинформации. Оплата гарантируется. Предложения в личку.

Dolphin 23.03.2010 20:42

Цитата:

Сообщение от Vladislav Gubenko (Сообщение 377274)
Не хочу открывать новую тему, поэтому пишу здесь: нужен программист, который напишет на С++ программу для сжатия аудиоинформации. Оплата гарантируется. Предложения в личку.

А существующие не устраивают?

DarkUser 24.03.2010 10:44

Цитата:

Сообщение от Dolphin (Сообщение 377292)
А существующие не устраивают?

Соглашайся... алгоритмов/кода тоже валом...

Vladislav Gubenko 24.03.2010 19:27

Цитата:

Сообщение от Dolphin (Сообщение 377292)
А существующие не устраивают?

Вопрос не ко мне. Я лишь разместил просьбу преподавателя ТУИТ. Если есть желание, могу дать его контактный телефон.

Vadim_Zubanov 26.03.2010 17:40

Цитата:

Сообщение от Vladislav Gubenko (Сообщение 377274)
нужен программист, который напишет на С++ программу для сжатия аудиоинформации

А алгоритм есть? Програмист не в состоянии разработать алгоритм сжатия аудиоинформации - он не звукорежиссер и психоакустику и прочие дисциплины не знает.

Vladislav Gubenko 26.03.2010 18:46

Понятное дело! Есть.


Текущее время: 19:48. Часовой пояс GMT +5.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot
OOO «Единый интегратор UZINFOCOM»