Как я могу справиться с большим количеством флагов предупреждения точности? - PullRequest
2 голосов
/ 12 августа 2011

Следующий простой код

int generated;
generated = (random() % 100) + 1;

выдает флаг предупреждения для потери точности, от long до int, поэтому я исправлял его, переписав код назначения как

generated = ((int)random() % 100) + 1;

Это правильный способ исправить проблему или я просто скрываю ошибки в другом месте?

Ответы [ 2 ]

6 голосов
/ 12 августа 2011

Вы также можете использовать long для ваших констант:

generated = (random() % 100L) + 1L;

Обратите внимание, что это предполагает, что генерируется долго.

РЕДАКТИРОВАТЬ: Поскольку сгенерированный является int, вам просто нужно разыграть его после того, как вы закончите:

generated = (int)((random() % 100L) + 1L);
2 голосов
/ 12 августа 2011

В вашем примере вы будете усекать результат random() слишком рано.Вам нужно наложить мод операции.

int generated;
generated = (int)(random() % 100) + 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...