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

Ошибка "integer constant is too large for 'long' type" - C++

Восстановить пароль Регистрация
 
vad505
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 103
12.05.2014, 15:20     Ошибка "integer constant is too large for 'long' type" #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "Blockdll.h"
#include <Windows.h>
#include <iostream>
 
using namespace std;
 
#define m 0x100000000
#define block_size 10
#define buf_size 100*block_size*2
 
unsigned long long a=0,c=0;//параметры генератора
long long X0=0;//начальное значение
long long X=X0;
 
long long myrand()//Генератор псевдослучайной последовательности
{
    return X=(a*X+c)%m; //вот здесь ошибка error: integer constant is too large for "long" type
}
Помогите пожалуйста!!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,538
Записей в блоге: 27
12.05.2014, 16:02     Ошибка "integer constant is too large for 'long' type" #2
Цитата Сообщение от vad505 Посмотреть сообщение
/вот здесь ошибка error: integer constant is too large for "long" type
}
Вам же компилятор говорит в чём ошибка.
vad505
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 103
12.05.2014, 16:03  [ТС]     Ошибка "integer constant is too large for 'long' type" #3
а как исправить её?
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,538
Записей в блоге: 27
12.05.2014, 16:19     Ошибка "integer constant is too large for 'long' type" #4
Поставить переменной m адекватное значение. Или написать свой класс больших чисел.
vad505
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 103
12.05.2014, 16:30  [ТС]     Ошибка "integer constant is too large for 'long' type" #5
например какое значение?
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,538
Записей в блоге: 27
12.05.2014, 16:33     Ошибка "integer constant is too large for 'long' type" #6
Посмотрите что такое 0x100000000 в десятичной системе и посмотрите пределы лонг лонг.
vad505
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 103
12.05.2014, 17:19  [ТС]     Ошибка "integer constant is too large for 'long' type" #7
а как написать свой класс?
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
12.05.2014, 17:29     Ошибка "integer constant is too large for 'long' type" #8
vad505, а ты посмотрел, что такое 0x100000000 в десятичной системе для начала? Можешь ответить на вопрос, зачем тебе оно вообще?

Ты вообще головой понимаешь, что остаток от деления некоего числа long long на число заведомо большее пределов long long выдаст ВСЕГДА в результате то же самое число!
Твой код бессмысленнен!
vad505
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 103
12.05.2014, 17:31  [ТС]     Ошибка "integer constant is too large for 'long' type" #9
значения переполнение 0x100000000
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
12.05.2014, 17:33     Ошибка "integer constant is too large for 'long' type" #10
vad505, зачем тебе находить остаток от деления на это число, блин?!
a%b всегда равно a если b>a
vad505
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 103
12.05.2014, 17:36  [ТС]     Ошибка "integer constant is too large for 'long' type" #11
Блочные шифры. Метод перестановок. Сеть Фейстеля
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2014, 18:49     Ошибка "integer constant is too large for 'long' type"
Еще ссылки по теме:

C++ Ошибка в Eclipse "Type Program "make" not found in PATH"
Вылезает: [Warning] character constant too long for its type C++
Ошибка: argument of type "char *" is incompatible with parameter of type "LPCWSTR" C++

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

Или воспользуйтесь поиском по форуму:
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
12.05.2014, 18:49     Ошибка "integer constant is too large for 'long' type" #12
vad505, ну так ты не повторяй как попугай за методичкой или что там тебе в школе выдали, а вникай в суть метода! наверняка в этом методе не должен использоваться делитель больший самого числа!

Добавлено через 8 минут
vad505, вот ты решил генерировать собственные рандомные числа. Почему ты взял a=0,c=0 ?
Ты что, не понимаешь, что с этими значениями одни нули будут генерироваться нули и только нули? Ты не вник даже в сам метод!
Далее, чем обусловлен твой выбор 0x100000000? Хоть какое-то рациональное объяснение есть? Для целочисленной константы великовато... Да дело даже не в типе константы. m по своему порядку не соответствует значениям a и c!

Добавлено через 5 минут
Далее, раз уж выбрал m степенью двойки, почему ты используешь операцию деления, вместо того, чтобы наложить просто маску на число? А с учётом того, сто старшая часть числа просто отсекается при переполнении, можно не использовать ни маски, ни остатка, и вообще число m можно не использовать! согласен?
Yandex
Объявления
12.05.2014, 18:49     Ошибка "integer constant is too large for 'long' type"
Ответ Создать тему
Опции темы

Текущее время: 17:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru