Другое соображение является кодом выхода для возврата. Просто" 1
" является довольно стандартным, хотя существует горстка зарезервированные коды выхода, которые колотят себя использование , и та же самая страница утверждает, что пользовательские коды должны быть в диапазоне 64-113 для приспосабливания стандартам C/C++.
Вы могли бы также рассмотреть подход битовый вектора что mount
использование для его кодов выхода:
0 success
1 incorrect invocation or permissions
2 system error (out of memory, cannot fork, no more loop devices)
4 internal mount bug or missing nfs support in mount
8 user interrupt
16 problems writing or locking /etc/mtab
32 mount failure
64 some mount succeeded
OR
- луг коды вместе позволяет Вашему сценарию сигнализировать о нескольких одновременных ошибках.
Это происходит потому, что в вашем операторе
if(f == 0.7)
0,7 рассматривается как двойное. Попробуйте 0.7f, чтобы убедиться, что значение обрабатывается как число с плавающей запятой:
if(f == 0.7f)
Но, как предложил Майкл в комментариях ниже, вы никогда не должны проверять точное равенство значений с плавающей запятой.
Этот ответ дополняет существующие: обратите внимание, что 0,7 не может быть точно представлен ни как float (или как double). Если бы он был представлен точно, то не было бы потери информации при преобразовании в float, а затем обратно в double, и у вас не было бы этой проблемы.
Можно даже утверждать, что должно быть предупреждение компилятора для литерала константы с плавающей запятой, которые не могут быть представлены точно, особенно когда стандарт настолько нечеткий в отношении того, будет ли округление выполняться во время выполнения в режиме, который был установлен как это время, или во время компиляции в другом режиме округления.
Все нецелые числа, которые могут быть представлены в точности, имеют последнюю десятичную цифру 5
. К сожалению, обратное неверно: некоторые числа имеют последнюю десятичную цифру 5
и не могут быть представлены точно. Маленькие целые числа могут быть представлены точно, а деление на степень 2 преобразует число, которое может быть представлено, в другое, которое может быть представлено, пока вы не входите в область денормализованных чисел.