Традиционно, в C целочисленное значение 0
обозначает false
, а 1
обозначает true
, и OpenSSL следует этому соглашению.См. этот раздел страницы Википедии о булевом типе данных для некоторого контекста:
Первоначальные реализации языка C (1972) не предоставили булева типа, и по сей день булевазначения обычно представлены целыми числами (целыми числами) в программах на Си.Операторы сравнения (>, == и т. Д.) Определены для возврата целочисленного (целого) результата со знаком, либо 0 (для false), либо 1 (для true).
Это несколько изменилосьс введением типа _Bool
в C99, но первоначальная реализация OpenSSL предшествует этому - отсюда и использование целочисленных значений 0
и 1
.Кроме того, в некоторых случаях функции OpenSSL используют разные целочисленные значения для обозначения разных типов результатов.
Ответ SO на возвращаемые значения, на которые вы указали , конкретно относится к особому случаю выходазначение процесса, которое будет возвращено его родителю.Действительно, для этой конкретной ситуации нулевое значение указывает на успех.Но это не типичный подход, применяемый к функциям, возвращающим значения в целом.