Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 55, средняя оценка - 4.67
gromo
370 / 269 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
#1

Вопрос о типах данных С++ - C++

02.11.2009, 20:16. Просмотров 7115. Ответов 42
Метки нет (Все метки)

Всем привет!
У меня путаница вышла со всем этим разнообразием типов данных в С++.
Вообще, тип long double должен занимать 3 машинных слова (или 12 байт).
Но вот когда я пишу :
C++
1
2
3
4
5
6
7
#include <iostream.h>
#include <cstddef>
void main() {
    long double qq=10;
    size_t qwer=sizeof qq;
    cout <<qwer <<endl;
}
то в результате выводится значение 8. А почему???

И вот я ещё нашел кое-что по типам данных :
http://www.cppreference.com/wiki/ru/data_types
Как понимать таблицу в пункте "Модификаторы типа"?
Если типы long и long int написаны в одной строке, то что...ОНИ ОДИНАКОВЫ???

Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2009, 20:16     Вопрос о типах данных С++
Посмотрите здесь:
видимо путаюсь в типах данных C++
C++ Вычислить значение выражения при различных вещественных типах данных
Вычислить значение выражения при различных вещественных типах данных C++
C++ Вычислить значение выражения при различных вещественных типах данных (float и double)
C++ Запутался в типах
C++ Наследование в шаблонных типах
C++ Распаковка parameter pack в наследуемых типах
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gromo
370 / 269 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
03.11.2009, 17:54  [ТС]     Вопрос о типах данных С++ #31
Извините за тупость, но у меня ещё такой вопрос:
Если где-то говорится, например тип int или short, или long, то если явно не указано, что они "unsigned" подразумевается, что они "signed"?
Evg
Эксперт CАвтор FAQ
17537 / 5775 / 370
Регистрация: 30.03.2009
Сообщений: 15,904
Записей в блоге: 26
03.11.2009, 18:06     Вопрос о типах данных С++ #32
Цитата Сообщение от gromo Посмотреть сообщение
Если где-то говорится, например тип int или short, или long, то если явно не указано, что они "unsigned" подразумевается, что они "signed"?
В стандарте это остаётся на усмотрение разработчику компилятора, но большинство "нормальных" компиляторов по умолчанию рассматривают тип как знаковый. В случаях для сигнальных процессоров и т.п. сие может быть по другому
gromo
370 / 269 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
03.11.2009, 18:28  [ТС]     Вопрос о типах данных С++ #33
Ну, я когда пишу

C++
1
2
3
4
5
#include <iostream.h>
void main() {
    int ival=-5;
    cout <<ival <<endl;
}
на экран выводится -5. После компиляции, ошибок и предупреждений не выдаёт.

Значит, по умолчанию целые типы рассматриваются как знаковые?
Evg
Эксперт CАвтор FAQ
17537 / 5775 / 370
Регистрация: 30.03.2009
Сообщений: 15,904
Записей в блоге: 26
03.11.2009, 18:31     Вопрос о типах данных С++ #34
А я тебе что писал?
gromo
370 / 269 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
03.11.2009, 18:37  [ТС]     Вопрос о типах данных С++ #35
Ну я просто подумал, а вдруг мой компилятор исключение из правил? Ну мало ли...
Evg
Эксперт CАвтор FAQ
17537 / 5775 / 370
Регистрация: 30.03.2009
Сообщений: 15,904
Записей в блоге: 26
03.11.2009, 18:43     Вопрос о типах данных С++ #36
да не... не на столько
gromo
370 / 269 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
03.11.2009, 18:52  [ТС]     Вопрос о типах данных С++ #37
Ну, спасибо за всё!
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,190
Завершенные тесты: 1
03.11.2009, 18:54     Вопрос о типах данных С++ #38
Цитата Сообщение от Evg Посмотреть сообщение
В стандарте это остаётся на усмотрение разработчику компилятора, но большинство "нормальных" компиляторов по умолчанию рассматривают тип как знаковый. В случаях для сигнальных процессоров и т.п. сие может быть по другому
Смотря какой стандарт. В C++97 и C99 они явно знаковые (кроме char, который не равен ни signed char, ни unsigned char и может быть либо знаковым, либо беззнаковым)
C++ 97, 3.9.1 Fundamental types
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 preceding it in the list. Plain ints have the
natural size suggested by the architecture of the execution
environment15) ; the other signed integer types are provided to meet
special needs.
C99, 6.2.5 Types
Здесь, кстати, и long long есть
4 There are five standard signed integer types, designated as signed char, short
int, int, long int, and long long int. (These and other types may be
designated in several additional ways, as described in 6.7.2.) There may also be
implementation-defined extended signed integer types.28) The standard and extended
signed integer types are collectively called signed integer types.29)
Evg
Эксперт CАвтор FAQ
17537 / 5775 / 370
Регистрация: 30.03.2009
Сообщений: 15,904
Записей в блоге: 26
03.11.2009, 18:55     Вопрос о типах данных С++ #39
Somebody, просто в более поздние стандарты, судя по всему, включают то, что постфактум уже и так делается несколько лет
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
03.11.2009, 23:23     Вопрос о типах данных С++ #40
можно абсолютно точно сказать, что int64_t НЕ является встроенным типом языка (в чём я почти не сомневался, но мало ли чего порешили разработчики стандарта).
Не пойму к чему ты все время клонишь.
Тип есть, пользоваться им можно.

Добавлено через 1 минуту
Куда его реально определили разработчики компилятора - это уже тебя сильно мучить не должно.

Добавлено через 47 секунд
long long есть
Только он может совпадать с обычным long по размеру

Добавлено через 58 секунд
Visual Studio 2005 и Visual Studio 2008 НЕ ПОДДЕРЖИВАЮТ C99.
Насчет VS2010 не знаю - релиз еще не вышел, пробовать не хочу
Evg
Эксперт CАвтор FAQ
17537 / 5775 / 370
Регистрация: 30.03.2009
Сообщений: 15,904
Записей в блоге: 26
03.11.2009, 23:23     Вопрос о типах данных С++ #41
Цитата Сообщение от odip Посмотреть сообщение
Не пойму к чему ты все время клонишь
К тому, о чем уже два или три раза писал: человек пытается разобраться в базовых типах языка, я ему и ответил на его вопрос. Дальше ты написал, что я что-то там прогнал, но так и не пояснил, где же прогнал
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,363
03.11.2009, 23:38     Вопрос о типах данных С++ #42
Цитата Сообщение от odip Посмотреть сообщение
Visual Studio 2005 и Visual Studio 2008 НЕ ПОДДЕРЖИВАЮТ C99.
Ну эт естессно. Ибо в эти среды включен компилятор языка C++, но не C (почувствуйте разницу!). Поэтому в упомянутых средах - разумеется, есть компилятор, поддерживающий C++03, но не поддерживающий C99.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2009, 22:16     Вопрос о типах данных С++
Еще ссылки по теме:
C++ Вопрос по вводу данных
Опишите промежутки чисел и символов при разных типах C++
Вопрос по передаче данных в функции C++
C++ Вычислить значение выражения при различных вещественных типах данны
Глупый вопрос по типу данных Variant C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
04.11.2009, 22:16     Вопрос о типах данных С++ #43
2CheshireCat: Большего бреда не слышал.
А то что файлы с расширением .C он компилирует и трактует их именно по языку C - ты это значит не замечал ?

Добавлено через 3 минуты
Вот из документации к VS2005 SP1:

With Visual C++ 2005, you can create Standard C++ programs using the Visual Studio Development Environment. In this procedure, you create a new project, add a new file to the project, edit the file to add C++ code, and then compile and run the program using Visual Studio.

You can type in your own C++ program or use one of the sample programs. The sample program referred to in this procedure is a console application that uses the set container in the Standard Template Library (STL), which is part of the ISO C++ 98 standard.

Visual C++ conforms to these standards:
ISO C 95
ISO C++ 98
Ecma C++/CLI 05

Добавлено через 1 минуту
Отсюда следует, что VS2005 не поддерживает C99 и не поддерживает C++03
Yandex
Объявления
04.11.2009, 22:16     Вопрос о типах данных С++
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru