Russian Qt Forum

Qt => Вопросы новичков => Тема начата: grOk от Июнь 23, 2011, 01:35



Название: warning: integer constant is too large
Отправлено: 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(); // Воспринимает нормально


Название: Re: warning: integer constant is too large
Отправлено: kambala от Июнь 23, 2011, 01:58
компилятор не может "вычислять" строки.

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


Название: Re: warning: integer constant is too large
Отправлено: LisandreL от Июнь 23, 2011, 07:07
Явно тип константы указывайте:
qint64 param = 401000000000LL;

а toInt() в ОС, где int не 64-хбитный должен число обрезать.


Название: Re: warning: integer constant is too large
Отправлено: grOk от Июнь 23, 2011, 09:36
Спасибо за ответы.