Добрый вечер! Решал одну задачу, наткнулся на такую ошибку:↵
↵
~~~~~↵
ll n;↵
cin >> n;↵
ll fn = n;↵
......↵
ll a = n * (n + 1);↵
ll b = 10000000000000 * n ;↵
ll c = n * n;↵
if (n != fn)↵
{↵
printf("ERROR!!");↵
}↵
if (n < 0)↵
{↵
printf("ERROR!!");↵
}↵
if (a < 0)↵
{↵
printf("ERROR!!");↵
}↵
if (b < 0)↵
{↵
printf("ERROR!!");↵
}↵
if (c < 0)↵
{↵
printf("ERROR!!");↵
}↵
↵
~~~~~↵
↵
<p>Опытным путем установил, что в первый if никогда не попадает программа, а во второй попадает. С чем это может быть связано? Переменная fn встречается 2 раза в коде.↵
`1 <= n <= 10^6`↵
<p><strong>UPD</strong>: программа из всех ифов задохит только в `if(a < 0).....`
↵
~~~~~↵
ll n;↵
cin >> n;↵
ll fn = n;↵
......↵
ll a = n * (n + 1);↵
ll b = 10000000000000 * n ;↵
ll c = n * n;↵
if (n != fn)↵
{↵
printf("ERROR!!");↵
}↵
if (n < 0)↵
{↵
printf("ERROR!!");↵
}↵
if (a < 0)↵
{↵
printf("ERROR!!");↵
}↵
if (b < 0)↵
{↵
printf("ERROR!!");↵
}↵
if (c < 0)↵
{↵
printf("ERROR!!");↵
}↵
↵
~~~~~↵
↵
<p>Опытным путем установил, что в первый if никогда не попадает программа, а во второй попадает. С чем это может быть связано? Переменная fn встречается 2 раза в коде.↵
`1 <= n <= 10^6`↵
<p><strong>UPD</strong>: программа из всех ифов задохит только в `if(a < 0).....`