Russian Qt Forum
Ноябрь 23, 2024, 10:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: warning: integer constant is too large  (Прочитано 3692 раз)
grOk
Гость
« : Июнь 23, 2011, 01:35 »

Доброго времени суток.

Объясните, почему когда я присваиваю переменной типа qint64 большое число, компилятор ругается,  а
когда делаю тоже самое через преобразование строки, то все нормально?

Код:
qint64 param = 401000000000; // выдает warning: integer constant is too large for 'long' type

qint64 param1 = QString("401000000000").toInt(); // Воспринимает нормально

int param2 = QString("401000000000").toInt(); // Воспринимает нормально
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Июнь 23, 2011, 01:58 »

компилятор не может "вычислять" строки.

тут скорее нужен тип quint64, а при преобразовании строки - метод toULongLong().
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #2 : Июнь 23, 2011, 07:07 »

Явно тип константы указывайте:
qint64 param = 401000000000LL;

а toInt() в ОС, где int не 64-хбитный должен число обрезать.
Записан
grOk
Гость
« Ответ #3 : Июнь 23, 2011, 09:36 »

Спасибо за ответы.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 22.