Несколько условий для утверждения - PullRequest
0 голосов
/ 16 июля 2011

У меня есть этот код в функции, но когда он запускается, он делает длинную паузу и затем говорит:

$floating point exception

Я предполагаю, что это связано с несколькими условиями в цикле for, ноне знаю, почему это неправильно.Есть идеи?

int i,j,number=5;
for (i = 2; (i < number || j==1); i++)
{
    if (number%i==0)
    {
        j = 1;
    }
}

Ответы [ 4 ]

7 голосов
/ 16 июля 2011

исключение с плавающей запятой - это означает, что существует арифметическая ошибка.

Похоже, вы пытаетесь остановить цикл с помощью j, но на самом деле вы продолжаете цикл навсегда (потому что как только вы получите j == 1 , условие or всегда верно ).
Затем происходит цикл i по всем значениям Integer обратно в 0 и получается исключение.

Я думаю, вы хотите сделать следующее:

for (i = 2; (i < number); i++)
{
    if (number%i==0)
    {
        j = 1;
        break;
    }
}
2 голосов
/ 16 июля 2011

Помните, что условие для цикла продолжить , а не для его завершения.

Трудно посмотреть на ваш код и понять, что вы пытаетесь сделать интуитивно. Хотя вы могли бы это исправить, переключив некоторую логику (вы имели в виду (i < number && j != 1)), лучше вместо этого остановиться и использовать break внутри цикла. Логика будет намного яснее, и тогда вы не будете совершать подобные ошибки.

1 голос
/ 16 июля 2011

Как только вы установите j в 1, цикл будет продолжаться вечно. Если вы хотите остановить цикл, когда условие if истинно, используйте break.

0 голосов
/ 16 июля 2011

Вы попадете в бесконечный цикл, когда будет достигнуто if -состояние.Это приведет к ошибке.Вы, вероятно, хотели остановить цикл, если j == 1?Тогда вам нужно было написать

for (i = 2; (i < number || j!=1); i++)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...