Использование нуля для обозначения успеха и отрицательного значения, часто -1
, для обозначения неудачи - очень распространенное соглашение. Системные вызовы Unix широко используют это (иногда с неотрицательным числом, означающим успех, когда, например, возвращается дескриптор файла).
Определенно существуют и другие соглашения - OpenSSL использует другое соглашение, например: 0
означает сбой, а 1
означает успех. Это имеет то преимущество, что вы можете написать:
if (OpenSSL_API_Function(arg1, arg2, &arg3))
{
…continue on success;
}
Использование !ERROR
вместо 0
или SUCCESS
или OK
менее обычно. Это, конечно, не так, поскольку логическое отрицание любого ненулевого значения равно нулю. Авторы, по-видимому, считают «!ERROR
» похожим на написание «без ошибок» и считают, что это яснее, чем SUCCESS
или OK
. Как правило, избегайте отрицаний только ради удовольствия; это может привести к запутанному мышлению.