С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
vad505
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 103
#1

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

12.05.2014, 15:20. Просмотров 965. Ответов 11
Метки нет (Все метки)

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
}
Помогите пожалуйста!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2014, 15:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка "integer constant is too large for 'long' type" (C++):

Ошибка при компиляции invalid suffix "i64" on integer constant - C++
Подскажите, при компиляции вылетает ошибка ./pluginterfaces/base/ftypes.h:82:33: error: invalid suffix &quot;i64&quot; on integer constant ...

Ошибка: argument of type "char *" is incompatible with parameter of type "LPCWSTR" - C++
Помогите, пожалуйста, исправить ошибку в программе. #include &lt;iostream&gt; #include &quot;stdio.h&quot; #include &quot;windows.h&quot; #include &lt;conio.h&gt; ...

[Warning] character constant too long for its type - C++
Подскажите, пожалуйста, что я не так сделал? Выдает ошибки, что &quot; character constant too long for its type &quot; #include &lt;iostream&gt; ...

Вылезает: [Warning] character constant too long for its type - C++
#include &lt;iostream&gt; #include&lt;conio.h&gt; #include&lt;math.h&gt; using namespace std; int main() { int x,y; cout &lt;&lt;&quot;Введу x&quot;; cin...

Отключить предупреждение (character constant too long for its type [enabled by default]) - C++
Компилятор mingw32 пишет предупреждение: character constant too long for its type if (fileName == L'//' || fileName == L'\\') ...

Ошибка в Eclipse "Type Program "make" not found in PATH" - C++
Установил на комп Eclipse, MinGW, попробовал запустить уже готовый хэлловорлд, эклипс выдал ошибку &quot;Program &quot;make&quot; not found in PATH&quot;....

11
Тамика
Котовчанин
917 / 461 / 145
Регистрация: 16.02.2010
Сообщений: 3,229
Записей в блоге: 27
12.05.2014, 16:02 #2
Цитата Сообщение от vad505 Посмотреть сообщение
/вот здесь ошибка error: integer constant is too large for "long" type
}
Вам же компилятор говорит в чём ошибка.
0
vad505
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 103
12.05.2014, 16:03  [ТС] #3
а как исправить её?
0
Тамика
Котовчанин
917 / 461 / 145
Регистрация: 16.02.2010
Сообщений: 3,229
Записей в блоге: 27
12.05.2014, 16:19 #4
Поставить переменной m адекватное значение. Или написать свой класс больших чисел.
0
vad505
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 103
12.05.2014, 16:30  [ТС] #5
например какое значение?
0
Тамика
Котовчанин
917 / 461 / 145
Регистрация: 16.02.2010
Сообщений: 3,229
Записей в блоге: 27
12.05.2014, 16:33 #6
Посмотрите что такое 0x100000000 в десятичной системе и посмотрите пределы лонг лонг.
0
vad505
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 103
12.05.2014, 17:19  [ТС] #7
а как написать свой класс?
0
Kuzia domovenok
2078 / 1907 / 176
Регистрация: 25.03.2012
Сообщений: 6,574
Записей в блоге: 1
12.05.2014, 17:29 #8
vad505, а ты посмотрел, что такое 0x100000000 в десятичной системе для начала? Можешь ответить на вопрос, зачем тебе оно вообще?

Ты вообще головой понимаешь, что остаток от деления некоего числа long long на число заведомо большее пределов long long выдаст ВСЕГДА в результате то же самое число!
Твой код бессмысленнен!
0
vad505
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 103
12.05.2014, 17:31  [ТС] #9
значения переполнение 0x100000000
0
Kuzia domovenok
2078 / 1907 / 176
Регистрация: 25.03.2012
Сообщений: 6,574
Записей в блоге: 1
12.05.2014, 17:33 #10
vad505, зачем тебе находить остаток от деления на это число, блин?!
a%b всегда равно a если b>a
0
vad505
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 103
12.05.2014, 17:36  [ТС] #11
Блочные шифры. Метод перестановок. Сеть Фейстеля
0
Kuzia domovenok
2078 / 1907 / 176
Регистрация: 25.03.2012
Сообщений: 6,574
Записей в блоге: 1
12.05.2014, 18:49 #12
vad505, ну так ты не повторяй как попугай за методичкой или что там тебе в школе выдали, а вникай в суть метода! наверняка в этом методе не должен использоваться делитель больший самого числа!

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

Добавлено через 5 минут
Далее, раз уж выбрал m степенью двойки, почему ты используешь операцию деления, вместо того, чтобы наложить просто маску на число? А с учётом того, сто старшая часть числа просто отсекается при переполнении, можно не использовать ни маски, ни остатка, и вообще число m можно не использовать! согласен?
0
12.05.2014, 18:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2014, 18:49
Привет! Вот еще темы с ответами:

Ошибка argument of type "CGroup *" is incompatible with parameter of type "CGroup *" - C++
Задача состоит в том, чтобы на основе текстовых файлов сделать подобие базы данных. Есть 3 связанных таблицы: группы, студенты, оценки. ...

Ошибка "Constant expression is required" - const в сlass - C++
Создал класс: class TVseGrup { public: TVseGrup(const short KolTo4=0) : FKolTo4(KolTo4) {FKolTo4=0;} const short FKolTo4; ...

Ошибка "Constant expression is required" - C++
Здравствуйте. Программа для формирования одномерного массива из матрицы размером N*N, компилятор turbo c++, выдает такую ошибку: Constant...

Ошибка: "case expression not constant" - C++
int draw(char form, int razmer){ switch(form){ case&quot;t&quot;:{ int i=0; while(i&lt;=10) { int s=10;


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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