Другие языки программирования и технологии

[c++] не работает long int переменная объявленная как long int a; занимает всего 4 байта ((( Что может быть не так?

И в чём проблема? ну занимает 4 байта и славно
Изучайте ru.cppreference.com/w/cpp/language/types
Genri Miller
Genri Miller
19 974
Лучший ответ
Сергей Романов у меня поле в структуре порядка 10^12
судя по
http:// ru.cppreference.com/w/cpp/language/types

так и должно было быть
по стандарту не менее 32бит
и вообще завязываться на размер переменной очень плохая практика
Perdahan Bekseitov
Perdahan Bekseitov
96 036
Что значит не работает?
Изъясняйтесь точнее, она не трактор, не бурлак.
Или выдается ошибка, или данные не соответствуют ожидаемым?
Типы данных, заданные на новых трансляторах, могут не работать на старых компьютерах и ОС.
Пишите английским шрифтом.
Если чего не понимаете, распечатывайте до и после изменения переменной, сразу же.
Чтобы не набирать ошибочных имен, копируйте их через буфер, скопируйте в переносимую строку комментария все идентификаторы и ключевые слова.
Напишите программу, вылавливающую все русские символы, обнаруженные вне комментариев и печатаемых строк.
Сергей Славкин
Сергей Славкин
70 042
Сергей Романов на каком блин старом компьютере??? у меня macbook pro retina, Windows 7 максимальная, Visual Studio 2010 Visual Studia экспресс выпуск. Проблема в том, что я пытаюсь запрогать базу данных, и в ней есть индексация, где номера элементов числа порядка 10^12. А использовать для индекса тип double неудобно. Или две переменные типа int тоже наворот. Но тут уже посоветовали long long int - работает-))
На практике это означает, что у тебя Винда или же прога/либа собрана под 32-битную UNIX-like систему.

Не используй long-и вообще, они непортируемые. На UNIX-like осях у них смысловая нагрузка - чтобы влезал указатель, на Винде - одбратная совместимость с 32-битным кодом, а в реале в мультиплатформенном коде хаос и попа, лучше уж int или long long int, с ними меньше хаоса.

Если только на Винде пишешь, то int даже на одну букву короче.
Если только на UNIX-like и тебе нужен целый тип для хранения указателя, то надежнее один раз typedef сделать, такие вещи часто портировать все равно приходится.
IK
Ilyha Koziry
25 105
long int весит 8-байт в x86-64 Linux-е.
Если нужно более длинное целое, пишите LONG LONG. Но многое зависит и от компилятора и версии операционной системы.