2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 25
|
|
1 | |
Тип данных long07.02.2015, 12:08. Показов 11265. Ответов 47
Метки нет (Все метки)
Здравствуйте.
1) long - это новый тип данных в c++? 2) Если первое верно, зачем вводить новый тип данных, если есть такой же int? 3) Если первое неверно, в чем отличие long от int? Если я правильно понял, long - это long int. В языке C нет типа данных long, там int и long int. Вопрос: почему при компиляции переменной с типом long в языке C не выдается ошибка? Спасибо.
1
|
07.02.2015, 12:08 | |
Ответы с готовыми решениями:
47
Тип long long и его ввод\вывод с использованием scanf\printf Тип unsigned long long Требуется написать функцию long long pow(long long a, unsigned int p), которая возводит число a в степень p Создать абстрактный тип данных - класс вектор, который имеет указатель на long, число элементов и переменную состояния |
07.02.2015, 12:13 | 2 |
long - это не новый тип данных.
long и long int - это одно и то же. Отличие long int от int, в том, что переменная может вмещать более крупные числа. По нарастающей short int -> int -> long int -> long long int
0
|
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 25
|
|
07.02.2015, 12:18 [ТС] | 3 |
Ouroboros-SK, да, но размер int и long одинаков: 4 байта - и диапазон у них одинаковый.
0
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
07.02.2015, 12:21 | 5 |
В С++ есть тип данных long и int. Причем тут пост выше незнаю)).
Гарантии языка: char <= short <= int <= long <= long long А так их размеры определяют компиляторы. Дело с int в том, что оно равно машинному слову( зависит от регистра процессора, регистра шины процессора и регистра ОС). На данный момент long и int по 32 бита. Несколько лет назад int был 16 бит, к примеру.
2
|
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 25
|
|
07.02.2015, 12:29 [ТС] | 6 |
rikimaru2013, т.е int заточен под конкретные возможности данного компьютера? Тогда и long также изменяем...
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||||||
07.02.2015, 12:31 | 7 | |||||
Зависит от платформы.
1
|
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 25
|
|
07.02.2015, 12:35 [ТС] | 8 |
0x10, нет int: 4, long: 4
У меня они одинаковые.
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
07.02.2015, 12:36 | 9 |
0
|
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
|
|
07.02.2015, 12:38 | 10 |
Не компьютера, а архитектуры. Например компилятор под х86-архитектуры (32 бита), будет считать int - 32 разряда, а long == int. Какой-нибудь компилятор для x86 (16 бит), например для DOS, будет считать int - 16 разрядов, а long - 32.
Для строгой гарантии стандартом предусмотрены специальные типы с указанием размерности. int32_t, int16_t и т.п. Добавлено через 36 секунд Это частный случай для 32-разрядной x86 платформы.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,520
|
|
07.02.2015, 12:38 | 11 |
long это прилагательное(длинный)
есть short int int long int long long int, в этом не уверен стандартизирован ли он допускается слово int опускать например short тоже самое что short int long int тоже самое что long также как unsigned тоже самое что unsigned int гарантировано что short int не больше чем int int не больше, чем long int long int не больше чем long long int но!!!long double нельзя написать long, это будет другой тип
1
|
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
|
|
07.02.2015, 12:40 | 12 |
0
|
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 25
|
|
07.02.2015, 12:41 [ТС] | 13 |
Что-то тут не то.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,520
|
|
07.02.2015, 12:42 | 14 |
и что?
например на 16 битных процессорах
int размер 16 бит (2 байта) long int размер 32 (4 байта) конкретный размер стандарт не гарантирует так же как char это минимальный элемент равен байту, а в байте не обязательно 8 бит Добавлено через 53 секунды дальше то читай вместо long double нельзя написать long
0
|
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 25
|
|
07.02.2015, 12:43 [ТС] | 15 |
0
|
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
|
|
07.02.2015, 12:44 | 16 |
0
|
ValeryS
|
07.02.2015, 12:50
#17
|
0
|
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
|
|
07.02.2015, 12:54 | 18 |
А компилятор для какой платформы? Если 32, то и думать нечего.
Если для x64, тот тут возможны варианты. Например разрядность для long могли оставить 4 байта из соображений совместимости, т.к. 32-разрядные архитектуры очень долго держались в качестве основных на рынке PC, и чтобы не ломать старый код, создатели компиляторов решили оставить разрядность в прежнем виде, даже для x64. Но на других архитектурах, например ARM или MIPS, этого может не быть. Вот ссылка для справки. См. таблицу в середине статьи. Там хорошо видно, что для windows x64 (64) решено оставить разрядность такой-же, как была для x86 (32). Но на *NIX уже все честно и long стал 64-разрядным.
1
|
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 25
|
|
07.02.2015, 12:55 [ТС] | 19 |
0
|
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
|
|
07.02.2015, 12:57 | 20 |
idi, стандарт гарантирует только
Остальное зависит от реализации компилятора, под заданную платформу. Если нужны более строгие гарантии, я уже написал, что есть специальные типы для этого (int8_t, int16_t, int32_t и int64_t - доступны при подключении <stdint.h>\<cstdint>).
0
|
07.02.2015, 12:57 | |
07.02.2015, 12:57 | |
Помогаю со студенческими работами здесь
20
Не понятный undefined reference to `unsigned long long f<unsigned long long, void> Char, short, int, long: какой тип выбрать? Чем различаются long long и long double? Как написать функцию c типом long double возвращаюшую тип shot? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |