383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
||||||
1 | ||||||
Вопрос о типах данных С++02.11.2009, 20:16. Показов 14165. Ответов 42
Метки нет (Все метки)
Всем привет!
У меня путаница вышла со всем этим разнообразием типов данных в С++. Вообще, тип long double должен занимать 3 машинных слова (или 12 байт). Но вот когда я пишу :
И вот я ещё нашел кое-что по типам данных : http://www.cppreference.com/wiki/ru/data_types Как понимать таблицу в пункте "Модификаторы типа"? Если типы long и long int написаны в одной строке, то что...ОНИ ОДИНАКОВЫ??? Спасибо!
0
|
02.11.2009, 20:16 | |
Ответы с готовыми решениями:
42
Ошибка в типах данных?! Ошибка в типах данных Различия в типах данных Биты в типах данных |
03.11.2009, 15:43 | 21 |
Человек не спрашивал что лучше. Он хочет разобраться с базовыми типами языка
Вопрос филосовский. Ибо одиночная переменная до фонаря сколько занимает, если при любом раскладе компилятор строит код, который читает-пишет только с 80 битами. Реально выдерживать соглашения нужно только в массивах и структурах.
0
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
03.11.2009, 15:45 | 22 |
int64_t - есть по стандарту C99.
0
|
03.11.2009, 15:47 | 23 |
Не знаю. Хз на кого рассчитана та статья, но без поллитры и валидола я не в состоянии её читать
Значит твой компилятор их не поддерживает (ибо в старых стандартах этого типа точно нет) Добавлено через 51 секунду Базовый, но не стандартный На 100% не уверен, но по-моему это typedef
0
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
03.11.2009, 15:50 | 24 |
А еще обратите внимание, коллеги, что тип int64_t есть в Стандарте C99, но отсутствует в Стандарте C++03.
0
|
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
|
|
03.11.2009, 15:52 | 25 |
Так и есть.
Код
[serg@localhost ~]$ cpp /usr/include/stdint.h | grep int64_t typedef long long int int64_t; typedef unsigned long long int uint64_t;
0
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
03.11.2009, 15:57 [ТС] | 26 |
Я сравнил, все сходится. А то когда я сам начал изучать, то в голове после этих типов образовалась каша. Но теперь, когда мне объяснил знающий человек, что-то прояснилось.
СПАСИБО ОГРОМНОЕ!!! ПОМОГЛИ!!!!!!!
0
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
03.11.2009, 15:59 | 27 |
Главное что он точно 64-битный.
0
|
03.11.2009, 16:03 | 28 |
Я имел в виду "не уверен, что int64_t" - встроенный в ЯЗЫК C99 тип. То, что где-то есть typedef с таким именем не даёт ответа на это
1. По второму кругу: человек спрашивал не это, он хотел разобраться с базовыми типами. Наши высокоинтелектуальные дискуссии про то, как программировать правильно, ему пока не интересны, т.к. он ещё не освоил базу 2. Если в языке нет 64-битного базового типа, то какая в пень разница, есть typedef для int64 или нет - всё равно над переменными этого типа нельзя будет строить арифметику
0
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
03.11.2009, 16:15 | 29 |
Второй стандарт языка Си (1999) предусматривает расширенный набор псевдонимов целочисленных типов данных intN_t, uintN_t, int_leastN_t, uint_leastN_t, int_fastN_t, uint_fastN_t (где N — требуемая разрядность), intptr_t, uintptr_t, intmax_t, uintmax_t. ... Теперь уверен ?
0
|
03.11.2009, 16:29 | 30 |
Если слово "псевдоним" трактуется как "typedef или define", то можно абсолютно точно сказать, что int64_t НЕ является встроенным типом языка (в чём я почти не сомневался, но мало ли чего порешили разработчики стандарта)
0
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
03.11.2009, 17:54 [ТС] | 31 |
Извините за тупость, но у меня ещё такой вопрос:
Если где-то говорится, например тип int или short, или long, то если явно не указано, что они "unsigned" подразумевается, что они "signed"?
0
|
03.11.2009, 18:06 | 32 |
В стандарте это остаётся на усмотрение разработчику компилятора, но большинство "нормальных" компиляторов по умолчанию рассматривают тип как знаковый. В случаях для сигнальных процессоров и т.п. сие может быть по другому
1
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
||||||
03.11.2009, 18:28 [ТС] | 33 | |||||
Ну, я когда пишу
Значит, по умолчанию целые типы рассматриваются как знаковые?
0
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
03.11.2009, 18:37 [ТС] | 35 |
Ну я просто подумал, а вдруг мой компилятор исключение из правил? Ну мало ли...
0
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
03.11.2009, 18:52 [ТС] | 37 |
Ну, спасибо за всё!
0
|
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
03.11.2009, 18:54 | 38 |
Смотря какой стандарт. В C++97 и C99 они явно знаковые (кроме char, который не равен ни signed char, ни unsigned char и может быть либо знаковым, либо беззнаковым)
C++ 97, 3.9.1 Fundamental types Здесь, кстати, и long long есть
0
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
03.11.2009, 23:23 | 40 |
Тип есть, пользоваться им можно. Добавлено через 1 минуту Куда его реально определили разработчики компилятора - это уже тебя сильно мучить не должно. Добавлено через 47 секунд Добавлено через 58 секунд Visual Studio 2005 и Visual Studio 2008 НЕ ПОДДЕРЖИВАЮТ C99. Насчет VS2010 не знаю - релиз еще не вышел, пробовать не хочу
0
|
03.11.2009, 23:23 | |
03.11.2009, 23:23 | |
Помогаю со студенческими работами здесь
40
Ошибка в типах данных видимо путаюсь в типах данных Макрос. Ошибка в типах данных Ошибка в типах данных extended и string Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |