Подтвердить что ты не робот

Может ли целое число быть NaN в С++?

Можно ли установить int в NaN? Если да, то как я могу проверить, есть ли int NaN или нет?

4b9b3361

Ответ 1

Нет, NaN - значение с плавающей запятой.

Каждое возможное значение int - это число.

Изменить

В стандарте говорится:

6.2.6.2 40). Некоторые комбинации битов дополнения могут генерировать ловушку представления, например, если один бит заполнения - бит четности. Несмотря на это, никакая арифметическая операция на допустимые значения могут генерировать ловушку представительство, не являющееся частью исключительное условие, такое как переполнение, и это не может произойти с неподписанные типы.

Таким образом, могут существовать определенные недопустимые значения целочисленной реализации, но нет определенного способа их генерации.

Ответ 3

Нет, вы не можете установить int в NaN.

Ответ 4

У вас нет какой-либо конкретной стоимости int как Nan. Что обычно делают люди, так это использование большого целого числа для представления этого значения. ЕСЛИ он без знака int, тогда его обычно используют -1.

Ответ 5

Я думаю, что наиболее подходящим API для обработки сбоев является возвращение второго целочисленного кода ошибки в вашем API, например:

int myfunc(args, int* realReturn);

Возвращаемое значение int является кодом ошибки.

Предыдущий вывод передается как указатель в вызывающем коде:

int myInt;
if (myFunc(args, &myInt) != 0) {
//handle error
}