Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.93/40: Рейтинг темы: голосов - 40, средняя оценка - 4.93
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826

Размер int на х64: почему int не равен 8 байт?

15.12.2015, 21:37. Показов 9078. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, всегда помнил и читал об этом где-то:
размер int равен машинному слову(совокупность регистра ОС, разрядности шины, регистра процессора).

Почему для x64 сборки VS 2015:

C++
1
2
3
4
5
6
7
8
#include <iostream>
using namespace std;
 
int main()
{
   cout << sizeof( int ) << endl;
   cout << sizeof( int* ) << endl;
}
Output:
4
8
Почему int не равен 8 байт ... .
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.12.2015, 21:37
Ответы с готовыми решениями:

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

Почему результат сравнения int и unsigned int равен 1?
Почему результат сравнения в выводе равен 1? int i = -5; unsigned u = 5; printf(&quot;int and unsigned int -5&gt;5 : %d\n&quot;,...

Какая из этих функций 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...

31
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
16.12.2015, 19:16
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Evg Посмотреть сообщение
С каких это пор в языке Си есть встроенные типы bool, wchar_t, char16_t или char32_t? Они являются typedef'ами на базовые типы а-ля short, int и т.п.
это как бе не принципиально.
их обеспечивает поставщик компилятора.
как он будет это делать - его трудности.

для прикладников все прозрачно.

Цитата Сообщение от Evg Посмотреть сообщение
А... т.е. разработчики вполне могли бы сделать компилятор C++ с 8-байтным int'ом, но для компилятора C оставить 4-байтный int. Ну-ну
разумеетеся, проблемы никому не нужны.

проще оставить 4х байтный инт,
и не иметь головняков ни с совместимостью,
ни с буквой плюсового стандарта.
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
16.12.2015, 19:37
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
размер int равен машинному слову(совокупность регистра ОС, разрядности шины, регистра процессора)
int будет такого размера, какой допустим стандартом и выбран разработчиками данного конкретного компилятора (то есть он может никак не зависеть от архитектуры!). Хотя обычно выбирают исходя из ABI ОС, размера регистров. int оставили 4 байта чтобы не смущать людей и программы 32битной эры.

Цитата Сообщение от hoggy Посмотреть сообщение
это как бе не принципиально.
их обеспечивает поставщик компилятора.
как он будет это делать - его трудности.
Не принципиально только если это именно уникальные типы, а не какие-нибудь алиасы (как в С).
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
16.12.2015, 19:49
Цитата Сообщение от ct0r Посмотреть сообщение
Не принципиально только если это именно уникальные типы, а не какие-нибудь алиасы (как в С).
не принципиально в принципе.

они должны быть, и мы можем на них закладываться.
а алиасы это, или встроенные типы,
или ещё какая нибудь ботва - для пользователя прозрачно.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21286 / 8311 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
16.12.2015, 19:53
Цитата Сообщение от Tulosba Посмотреть сообщение
Всегда - нельзя
Цитата Сообщение от Tulosba Посмотреть сообщение
Т.к. Си не есть подмножество плюсов
Возможно я не правильно сказал "вперемешку". Я имел в виду варианты, когда часть исходников написаны на Си, а часть на Си++. Понятно, что через хидера можно всяких соплей подцепить, чтобы получилось "вперемешку", но речь идёт не об этом, а об интерфейсе взаимодействия между Си и Си++, т.к. они описываются в терминах одних и тех же типов

Цитата Сообщение от Tulosba Посмотреть сообщение
но когда ты пишешь в плюсовый раздел форума, не удивляйся, что тебя поправляют именно по C++
Для меня было несколько неожиданно и неочевидно, что для эксперта, коим ты несомненно являешься, описание базовых типов в контексте программных соглашений (коими являются размеры типов) могло как-то разделиться для Си и Си++. Хотя в мире много вещей, которые очевидны для Иванова и далеко не очевидны для Петрова только потому, что они на одно и то же смотрят под разными углами
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
16.12.2015, 19:57
Цитата Сообщение от hoggy Посмотреть сообщение
они должны быть, и мы можем на них закладываться.
а алиасы это, или встроенные типы,
или ещё какая нибудь ботва - для пользователя прозрачно.
Особенно прозрачно при перегрузке например. Чуешь разницу-то?
C++
1
2
3
void foo(int) {}
void foo(char32_t) {} // builtin type - overload
void foo(int32_t) {} // alias - redefinition error
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
16.12.2015, 20:03
Цитата Сообщение от ct0r Посмотреть сообщение
Особенно прозрачно при перегрузке например. Чуешь разницу-то?
на практике я сталкивался с ситуацией,
когда требовалось оставить только один вариант: int32_t,

но я даже представить себе не могу,
зачем могут понадобится указанные вами перегрузки.

мне не очевидно, чем char32_t отличается от int32_t, например.
0
18 / 19 / 4
Регистрация: 27.06.2016
Сообщений: 236
13.01.2020, 22:30
Всё же есть какой-то способ например в вижуал студио сделать int размером 64 бит? Ну там может гдето в настройках компилятора например.

Смысл в чём? У меня есть задача сравнивать массивы типа char размером в 16 членов. И таких массивов в моём учебном задании получается связанный список размером в половину оперативы моего писюка. И происходит это сравнение методом перебора элементов - часами. По этому появилась идея, если бы int был 64 а дабл 128 то я бы сделал указаетель на массив и сравнивал массивы как числа знаком != что как мне кажется раз в 10 должно быть быстрее чем сравнивать массивы перебором.

Мне кажется было бы логично предусмотреть возможность делать размер int на усмотрение разработчика а не просто из соображений совместимости с каким-то кодом из прошлого века.
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
13.01.2020, 22:52
Святогор, uint64_t чем не устраивает?
0
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
13.01.2020, 22:52
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
кто это?
Возможно это онhttps://www.cyberforum.ru/members/433892.html
0
18 / 19 / 4
Регистрация: 27.06.2016
Сообщений: 236
13.01.2020, 23:14
Святогор, uint64_t чем не устраивает?
Первый раз вижу, а что это вообще такое ? :-) что ж погуглим....
0
place status here
 Аватар для gunslinger
3192 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,028
14.01.2020, 01:28
В данном случае это unsigned long long.
Есть еще вариант - использовать long long.
0
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,095
14.01.2020, 10:22
Цитата Сообщение от Святогор Посмотреть сообщение
Первый раз вижу, а что это вообще такое ?
Стандартный тип данных (описан в inttypes.h или stdint.h) размером ровно 64 бита.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.01.2020, 10:22

Почему макс short int равен 65535?
Делаю sizeof() получаю 4 байта 1байт=8бит те 4байта=32 бита но бит это 0 или 1 таки образом есть последовательность из 0 и 1...

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...

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

Что делает строка int а = (1|2|3|4) и почему результат равен 7
Всем добрый день! Вопрос в шапке. Поиск в google ничего не дал. Заранее спасибо за ответ!

void _fastcall TForm1::Vector(int x0, int y0, int a, int l);
//--------------------------------------------------------------------------- #include &quot;DateUtils.hpp&quot; // для доступа к SecondOf,...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. Сразу отвечу: А в PvP с ним. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru