-1が返されたときにエラー255が発生する理由

-1が返されたときにエラー255が発生する理由

私はC ++プログラミングに初めて触れましたが、非常に基本的な質問があります。-1C ++プログラムに戻って終了ステータスを確認すると、255なぜこの現象が発生しますか?

コードは基本です。

int main()
    {
        return -1;
    }

その後、コンパイルされたコードを実行します。

echo $?
255

ベストアンサー1

UNIX / POSIXでは、プログラムの終了コードは符号なし8ビット値として定義されているためです。 -1を符号なし8ビットに変換すると255になります。

以下を追加するように編集されました。

詳細を提供するには、UNIX の wait*() システムコールファミリは、プロセス結果を単一の 32 ビット整数にエンコードします。この結果の32ビットは、プロセスがコアをダンプし、信号(およびどの信号)で終了したかなどの情報を提供するためにさらに細分化されています。これらの32ビットのうち8ビットのみがプロセスの終了コード用に予約されており、これは符号なし値として解釈されます。

UNIX/POSIXのfork/exec/waitモデルは、最も古くて深い機能の1つです。今日、新しいオペレーティングシステムを設計している場合は、おそらく他の作業を実行します(少なくとも64ビットを使用してください:-)。

一方、> 255終了コードは本当に役に立ちますか?私はそれを疑う。本当にもっと多くの機能が必要な場合は、より広い範囲の数値終了コードの代わりに「終了文字列」に切り替えることをお勧めします。

おすすめ記事