Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
#1

Не работает unsigned int - C++

07.10.2012, 13:08. Просмотров 593. Ответов 7
Метки нет (Все метки)

int a[536870912] - пашет
unsigned int a[536870912) - нет.

почему ? ведь судя по таблице msdn http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspx
UINT_MAX Maximum value for a variable of type unsigned int. 4294967295 (0xffffffff)
4294967295 / 4 = 1073741823 . почему же тогда компилятор ругается ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2012, 13:08     Не работает unsigned int
Посмотрите здесь:

Определение типов. Приведение int к unsigned int - C++
При таком определении 5 рассматривается как int. Как при определении указать что 5 будет именно unsigned int? unsigned int n=5; ...

Сложение int и unsigned - C++
Всем привет. Есть код в котором складывается int и unsigned. unsigned u=10; int i=-42; cout<<u+i<<endl; Вопрос: ответ будет...

Отличаются ли unsigned int и BYTE ? - C++
Взял из unrar метод приведения sha1 к 128 битному паролю AES. void AesKeyExpansion(BYTE Key, int KeyLenght, unsigned int digest) { ...

numeric_limits<unsigned int>::digits - C++
при запуске такой скомпилиной проги на 32р. системе должно вывести bits in int: 32 а при запуске на 64р. системе bits in int: 64 так...

Преобразование 'time_t' в 'unsigned int' - C++
Массив предназначен для хранения значений ростов двенадцати человек. С помощью датчика случайных чисел заполнить массив целыми значениями,...

Почему плохо использовать unsigned int? - C++
Почему плохо использовать unsigned int и чему он удобней для представления массивов бит чеm signed int? (Из Страуструпа)

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кот Ангенс
317 / 267 / 38
Регистрация: 24.05.2012
Сообщений: 629
07.10.2012, 13:49     Не работает unsigned int #2
Во-первых, у Вас закрывающаяся круглая скобка вместо квадратной. Во-вторых, размерность массива никак не связана с максимальным значением типа.
Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
07.10.2012, 13:50  [ТС]     Не работает unsigned int #3
как же вы тогда объясните то что
int a[536870911] - пашет
int a[536870912] - нет
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
07.10.2012, 13:54     Не работает unsigned int #4
Как по-твоему связано максимальное возможное значение для типа и число элементов в автоматическом массиве?
Нет, лучше так: что происходит в этой строке
C++
1
int a[536870911]
?
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
07.10.2012, 13:56     Не работает unsigned int #5
В Windows процессу выделяется 2 гигабайта виртуальной памяти (в пользовательском режиме, ещё 2 гига для ядра). Вы пытаетесь создать массив, который превышает этот предел: 536870912 * 4 + 4 > 231. (Ещё 4 байта на указатель на этот массив.)
Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
07.10.2012, 14:38  [ТС]     Не работает unsigned int #6
но ведь 536870912 *4 = 2147483648
а работает то 536870911
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
07.10.2012, 14:55     Не работает unsigned int #7
Ещё раз.

Массив из 536870911 интов = 536870911*4 + 4 байта = 2147483648 байтов.
Массив из 536870912 интов = 536870912*4 + 4 байта = 2147483652 байта.
Выделяемые Windows 2 гигабайта памяти = 231 байтов = 2147483648 байтов.

Процесс не может отхапать себе больше, чем 2147483648 байтов памяти.

Те лишние четыре байта вылазят, потому что надо хранить то ли размер этого массива, то ли его положение, то ли точку возврата в стеке, то ли ещё что. Скорее всего именно точку возврата. Я не особо в курсе, но судя по поведению, они заняты.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2012, 15:48     Не работает unsigned int
Еще ссылки по теме:

Битовые операции - перемещение бит для unsigned int - C++
Помогите разобраться, задание: Создайте функцию, которая перемещает биты для unsigned int на 30 бит в право, причем выходящие при...

Создать массив объединений, содержащих поля unsigned int и float - C++
Очень вас прошу! Нужно написать на С++ программу! Я уже отчаялась. Часа 2 над этим сижу В программе должно быть как минимум 2...

Ошибка error C2070: 'unsigned int': illegal sizeof operand - C++
Собственно, есть пара вопросов (смотреть в комментариях). Помогите разобраться пожалуйста Заранее спасибо Всем Пример части ...

Порядок байт. Массив чаров приводится к типу unsigned int. - C++
Есть массив из 4 char. Массив приводится к типу unsigned int и затем данные извлекаются в переменную типа unsigned int. Нужно, чтобы байты...


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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт CАвтор FAQ
17462 / 5700 / 361
Регистрация: 30.03.2009
Сообщений: 15,636
Записей в блоге: 26
07.10.2012, 15:48     Не работает unsigned int #8
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Ещё 4 байта на указатель на этот массив
Нету никакого указателя
Yandex
Объявления
07.10.2012, 15:48     Не работает unsigned int
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru