Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915

Гарантированный 8 байтовый int

18.02.2023, 17:01. Показов 2362. Ответов 57
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,

Подскажите пожалуйста, правильно ли я понимаю, что long long int - это минимум 8 байтовый знаковый тип ?

Вот тут: https://en.cppreference.com/w/cpp/language/types
написано, что: В с++11:
C++
1
long long int - это "at least 64"
И вот тут:https://en.wikipedia.org/wiki/C_data_types
написано, что: В с99:
C++
1
Long long signed integer type. Capable of containing at least the [9,223,372,036,854,775,807, +9,223,372,036,854,775,807] range.[3][a] Specified since the C99 version of the standard.

Если я правильно понимаю, то начиная с С++11 и С99 - Long long int - гарантируется минимум 8 байт. Если так, то, а что тогда С++98 и С89 ?

Я что то не смог нагуглить. Или в этих стандартах просто нет типа "long long int" ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.02.2023, 17:01
Ответы с готовыми решениями:

Какая из этих функций int Q(int w) int W(int y,int u,int i) сработает быстрее?
Если есть 2 функции(простые или перегруженные) к примеру Q(int w) int W(int y,int u,int i)или int Funkz(int a) int Funkz(int a, int b, int...

Не работает перегрузка индексного оператора [], вместо [int][int] почему то нужно ставить [0][int][int]
#include<iostream> #include<string> #include<vector> #include<algorithm> #include<ctime> #include<conio.h> #include<windows.h> ...

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H #include &lt;iostream&gt; using...

57
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
12.03.2023, 12:28  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Rius Посмотреть сообщение
В том преимущество, что на другой платформе int64_t может оказаться тоже определён в stdint, но иначе.
Но теоретически даже, если int64_t будет определен на другой платформе иначе, но тип "long long int" - все равно должен существовать на этой другой платформе ? И должен будет следовать правилам С++, которое определяет его, как "минимум не меньше 64 байта" ?
0
Эксперт .NET
 Аватар для Rius
13350 / 7806 / 1694
Регистрация: 25.05.2015
Сообщений: 23,776
Записей в блоге: 14
12.03.2023, 13:50
Optimus11, вам нужен бардак в именовании типов?
Кроссплатформенным разработчикам - нет.
Где-то int может быть и 8 бит, и 64.

Вот тут обсуждали: uchar, ushort, uint, ulong надо ли?
2
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
12.03.2023, 14:26  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Optimus11, вам нужен бардак в именовании типов?
Кроссплатформенным разработчикам - нет.
Где-то int может быть и 8 бит, и 64.

Вот тут обсуждали: uchar, ushort, uint, ulong надо ли?
Но я не спрашивал про int, я спрашивал про long long int.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
12.03.2023, 14:36
Цитата Сообщение от Optimus11 Посмотреть сообщение
Но я не спрашивал про int
В чем принципиальная разница ?
Только типы фиксированной ширины гарантируют эту ширину. int64_t = 64 битам

Добавлено через 3 минуты
Цитата Сообщение от Optimus11 Посмотреть сообщение
которое определяет его, как "минимум не меньше 64 байта" ?
Нет такого правила в С++.
Есть следующее правило относительно базовых типов, если я правильно помню :
char <= short <= int <= long int <= long long int
0
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
12.03.2023, 14:53  [ТС]
Цитата Сообщение от SmallEvil Посмотреть сообщение
В чем принципиальная разница ?
Только типы фиксированной ширины гарантируют эту ширину. int64_t = 64 битам
В том, что размер int не гарантируется не ниже какого то размера и зависит от платформы, a long long int - гарантируется.


Цитата Сообщение от SmallEvil Посмотреть сообщение
Нет такого правила в С++.
Есть следующее правило относительно базовых типов, если я правильно помню :
Сначала Вы пишите, что "Нет такого правила", а потом - "если я правильно помню".

Вот тут: https://en.cppreference.com/w/cpp/language/types
написано, что: В с++11:

C++
1
long long int - это "at least 64"
И вот тут:https://en.wikipedia.org/wiki/C_data_types
написано, что: В с99:
C++
1
Long long signed integer type. Capable of containing at least the [9,223,372,036,854,775,807, +9,223,372,036,854,775,807] range.[3][a] Specified since the C99 version of the standard.
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
12.03.2023, 14:56
Цитата Сообщение от SmallEvil Посмотреть сообщение
Нет такого правила в С++.
Правила нет, есть требование.

The width of each signed integer type shall not be less than the values specified in Table 14.
The value representation of a signed or unsigned integer type comprises N bits, where N is the respective width.
Each set of values for any padding bits ([basic.types.general]) in the object representation are alternative representations of the value specified by the value representation.
https://eel.is/c++draft/basic.fundamental#3
1
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
12.03.2023, 14:57
Цитата Сообщение от Optimus11 Посмотреть сообщение
размер int не гарантируется не ниже какого то размера и зависит от платформы
Точно так же гарантируется. См. выше.
1
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
12.03.2023, 15:01
Цитата Сообщение от DrOffset Посмотреть сообщение
Правила нет, есть требование.
Согласен. Немного поспешил с категоричностью.

Добавлено через 1 минуту
Цитата Сообщение от DrOffset Посмотреть сообщение
Правила нет, есть требование.
Но опять же, для каого/каких это стандартов.
И кому нужно это запоминать, если это элементарно проверяется.
0
place status here
 Аватар для gunslinger
3192 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,026
12.03.2023, 15:08
А максимальный размер зависит (может зависеть) от разрядности ОС (есть ощущение, что это так)?
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
12.03.2023, 15:10
Цитата Сообщение от SmallEvil Посмотреть сообщение
Но опять же, для каого/каких это стандартов.
Да в общем-то для любых. Просто до С++11 это было не совсем явно описано, ссылалось на стандарт С в этом плане, где уже нижний порог был задан. Вот из С99
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
12.03.2023, 15:12
gunslinger,
Besides the minimal bit counts, the C++ Standard guarantees that

1 == sizeof(char) ≤ sizeof(short) ≤ sizeof(int) ≤ sizeof(long) ≤ sizeof(long long).
Note: this allows the extreme case in which bytes are sized 64 bits, all types (including char) are 64 bits wide, and sizeof returns 1 for every type.
От така ..йня малята.
1
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
12.03.2023, 15:14
Цитата Сообщение от gunslinger Посмотреть сообщение
А максимальный размер зависит (может зависеть) от разрядности ОС (есть ощущение, что это так)?
Думаю, что нет. Если только косвенно.
Например, 32-битный long вполне был доступен на 16-битном DOS.
1
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
12.03.2023, 15:15
Цитата Сообщение от DrOffset Посмотреть сообщение
Да в общем-то для любых.
При подборе необходимого типа, на эти минимальные ограничения можно опираться ?
Если да, то вполне нормально.
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
12.03.2023, 15:19
Цитата Сообщение от SmallEvil Посмотреть сообщение
При подборе необходимого типа, на эти минимальные ограничения можно опираться ?
Можно. И в современном С++ также есть помощники для этого выбора, описанные в cstdint.
Речь о int_fastXX_t, int_leastXX_t и т.п.
1
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
12.03.2023, 15:23
Да уймитесь вы.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
12.03.2023, 15:59
SmallEvil, а сколько бит в char, как узнать?
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
12.03.2023, 16:02
Цитата Сообщение от nmcf Посмотреть сообщение
а сколько бит в char, как узнать?
C
1
8 * sizeof(char);
0
Эксперт .NET
 Аватар для Rius
13350 / 7806 / 1694
Регистрация: 25.05.2015
Сообщений: 23,776
Записей в блоге: 14
12.03.2023, 16:04
nmcf,
CHAR_BIT
https://www.geeksforgeeks.org/char_bit-in-c/
Croessmah упоминал в том блоге: Гарантированный 8 байтовый int
1
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
12.03.2023, 16:05
Verevkin, там же выше написано, что char может быть даже 64 бита, а sizeof измеряет в char'ах.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
12.03.2023, 16:05
Цитата Сообщение от nmcf Посмотреть сообщение
а сколько бит в char, как узнать?
CHAR_BIT

Добавлено через 43 секунды

Не по теме:

Цитата Сообщение от Rius Посмотреть сообщение
Croessmah упоминал в том блоге.
Любит он такое :)

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.03.2023, 16:05

[C++ Error] Unit2.cpp(22): E2034 Cannot convert 'int (*)(int,int *)' to 'int'
Всем привет! Пожалуйста , помогите , почему выдает ошибку Unit2.cpp(22): E2034 Cannot convert 'int (*)(int,int *)' to 'int' ?. Мне нужно...

Выдает такую ошибку Unit1.cpp(30): E2333 Class member 'Tr::Vvod_Tr4(int,int,int,int,int,int)' declared outside its class
//--------------------------------------------------------------------------- #include &lt;math.h&gt; #include &lt;vcl.h&gt; #pragma hdrstop ...

imagecopyresized(resource dst_im, resource src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)?
Обясните пожалуйста как пользоватся этой функцик imagecopyresized(resource dst_im, resource src_im, int dstX, int dstY, int srcX, int srcY,...

Преобразовать одномерный байтовый массив в трехмерный байтовый массив
При выполнении функции выпадает исключение: &quot;Выдано исключение типа System.OutOfMemoryException&quot; что не так? //преобразование...

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru