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

C++

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

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

02.11.2009, 20:16. Просмотров 7314. Ответов 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 написаны в одной строке, то что...ОНИ ОДИНАКОВЫ???

Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2009, 20:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вопрос о типах данных С++ (C++):

Распаковка parameter pack в наследуемых типах - C++
Есть класс наследуемый от переменного количества типов. Я не могу понять как можно сделать распаковку списка параметров с доступом к...

Вопрос по вводу данных - C++
Вот имеется простой ввод данных: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; void main() { int n,i,j; float a, b; ...

Вопрос про тип данных BYTE - C++ Builder
Всем привет! Возможно тупой вопрос, но впервый раз сталкиваюсь с этим. BYTE *bf; bf = 78*10/56; Как такое вообще возможно?

Тупой вопрос какой самый большой целочисленный тип данных?? - Visual C++
В чистом С по ходу unsigned long, а в Visual?? Надо засунуть в переменную 2 в 62 степени((( это - 4611686018427387904 В...

Ошибка в типах данных - PascalABC.NET
Нужно составить условие вида: if abs(c-m) = abs(m-a) and abs(d-k)= abs(k-b)then writeln ('Точка находится внутри прямоугольника') else...

Различия в типах данных - PHP БД
Создаю БД MySQL 5.5. Для текстовых полей я нашел 4 типа: -char; -text; -varchar. Объясните подробно отличия этих типов. Для...

42
gromo
371 / 270 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
03.11.2009, 17:54  [ТС] #31
Извините за тупость, но у меня ещё такой вопрос:
Если где-то говорится, например тип int или short, или long, то если явно не указано, что они "unsigned" подразумевается, что они "signed"?
0
Evg
Эксперт CАвтор FAQ
18029 / 6261 / 427
Регистрация: 30.03.2009
Сообщений: 17,200
Записей в блоге: 27
03.11.2009, 18:06 #32
Цитата Сообщение от gromo Посмотреть сообщение
Если где-то говорится, например тип int или short, или long, то если явно не указано, что они "unsigned" подразумевается, что они "signed"?
В стандарте это остаётся на усмотрение разработчику компилятора, но большинство "нормальных" компиляторов по умолчанию рассматривают тип как знаковый. В случаях для сигнальных процессоров и т.п. сие может быть по другому
1
gromo
371 / 270 / 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. После компиляции, ошибок и предупреждений не выдаёт.

Значит, по умолчанию целые типы рассматриваются как знаковые?
0
Evg
Эксперт CАвтор FAQ
18029 / 6261 / 427
Регистрация: 30.03.2009
Сообщений: 17,200
Записей в блоге: 27
03.11.2009, 18:31 #34
А я тебе что писал?
0
gromo
371 / 270 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
03.11.2009, 18:37  [ТС] #35
Ну я просто подумал, а вдруг мой компилятор исключение из правил? Ну мало ли...
0
Evg
Эксперт CАвтор FAQ
18029 / 6261 / 427
Регистрация: 30.03.2009
Сообщений: 17,200
Записей в блоге: 27
03.11.2009, 18:43 #36
да не... не на столько
0
gromo
371 / 270 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
03.11.2009, 18:52  [ТС] #37
Ну, спасибо за всё!
0
Somebody
2791 / 1602 / 147
Регистрация: 03.12.2007
Сообщений: 4,197
Завершенные тесты: 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)
0
Evg
Эксперт CАвтор FAQ
18029 / 6261 / 427
Регистрация: 30.03.2009
Сообщений: 17,200
Записей в блоге: 27
03.11.2009, 18:55 #39
Somebody, просто в более поздние стандарты, судя по всему, включают то, что постфактум уже и так делается несколько лет
0
odip
Эксперт С++
7158 / 3220 / 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 не знаю - релиз еще не вышел, пробовать не хочу
0
Evg
Эксперт CАвтор FAQ
18029 / 6261 / 427
Регистрация: 30.03.2009
Сообщений: 17,200
Записей в блоге: 27
03.11.2009, 23:23 #41
Цитата Сообщение от odip Посмотреть сообщение
Не пойму к чему ты все время клонишь
К тому, о чем уже два или три раза писал: человек пытается разобраться в базовых типах языка, я ему и ответил на его вопрос. Дальше ты написал, что я что-то там прогнал, но так и не пояснил, где же прогнал
0
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,389
03.11.2009, 23:38 #42
Цитата Сообщение от odip Посмотреть сообщение
Visual Studio 2005 и Visual Studio 2008 НЕ ПОДДЕРЖИВАЮТ C99.
Ну эт естессно. Ибо в эти среды включен компилятор языка C++, но не C (почувствуйте разницу!). Поэтому в упомянутых средах - разумеется, есть компилятор, поддерживающий C++03, но не поддерживающий C99.
0
odip
Эксперт С++
7158 / 3220 / 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
0
04.11.2009, 22:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2009, 22:16
Привет! Вот еще темы с ответами:

Ошибка в типах данных - Delphi
Здравствуйте. Помогите пожалуйста исправить ошибки в коде var p,it,a,m,b:integer; Procedure TForm1.Button1Click(Sender:...

Биты в типах данных - C#
У меня такая проблема: например есть две переменных типа short (16 bit) x1 и x2, и пусть x1 = 55, x2 = 12 их битовое представление 00000000...

видимо путаюсь в типах данных - C++
Здравствуйте. Для понимая о чем говорим: #include &lt;iostream&gt; #include &lt;ctype.h&gt; #include &lt;clocale&gt; using namespace std; ...

Макрос. Ошибка в типах данных - VBA
Помогите исправить ошибку. В Макросе ошибка на выделенной строке и пишет несоответвие типов. Sub Êíîïêà1_Ùåë÷îê() Dim i As Byte...


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

Или воспользуйтесь поиском по форуму:
43
Ответ Создать тему
Опции темы

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