Заметил ошибку в одной из программ, над которой я работал, извлек код, и в основном это так.
Он выполняет сравнение без знака со знаком int и приводит к бесконечному циклу:
#include <iostream>
int main()
{
unsigned int i = 0;
while (i < 1000000)
{
printf("%o\n", i);
++i;
}
return 0;
}
Вместо этого я попытался использовать это:
#include <iostream>
int main()
{
unsigned int i = 0;
while (i < 1000000u)
{
printf("%o\n", i);
++i;
}
return 0;
}
Что, как я думал, исправит сравнение подписанного / неподписанного, но это не так, он все еще попадает в бесконечный цикл. Поэтому я также попытался преобразовать его в unsigned int и без кубиков, по-прежнему бесконечные циклы.
Использование Visual Studio 2015, полная оптимизация, релизный компилятор.
i += 1000
, чтобы проверить, работает ли условие выхода. - person Sergey Kalinichenko   schedule 22.08.20161000000
находится в обоих диапазонах, и вы пытались решить проблему, предполагая, что это причина ее, но это не сработало. - person AhmadWabbi   schedule 22.08.2016#include <iostream>
, а потом используетеprintf
? - person dxiv   schedule 22.08.2016