web-dev-qa-db-ja.com

`return 0x1;`はどういう意味ですか?

Web上のプロジェクトのソースを閲覧していると、メインにreturnステートメントがあり、奇妙に見えます。

int main()
{
    /* ... */
    return 0x1;
}

つまり、mainは0x1 radix 16を返しますが、それは1 radix 10です。メインは0を返すべきではありませんか?

不正解ですよね?ちなみにreturn 0x0は大丈夫ですか?

13
Rizo

1を返します。0x1は1の16進数値です。

0x0を返すことも自由です。これは0の別の表現です。必要に応じて、8進数も使用できます。

22
JoshD

0x1または1でも違いはありません。同じ数です。したがって、0x0を返すこともできます。これは、コードに0を書き込む別の方法です。

ただし、returnがメインブロックのコードの最後の行であると想定すると、おそらく、1を返さないはずです。mainからのゼロ以外のリターンコードは失敗を意味し、プログラムが最後まで実行される場合、それは通常成功の兆候-その場合は0を返す必要があります。

ただし、プログラムを逆に構築することは完全に可能であるため、1を返すことがここで正しいことも可能です。

5
Michael Madsen

簡単に言うと、次のように変換されます。

return 1;

数値の前に「0x」を置くことにより、16進数をソースコードに入力できます。 0xFF = 255

メイン関数が必要な任意の値を返すことが可能です。これにより、発生した(または発生していない)エラー条件を効果的に文書化できます。このプログラムが戻り値を問い合わせるプロセスによって呼び出された場合、戻り値を0x0(または単に0)に変更すると、呼び出し元のプログラムが予期しない動作をする可能性があります。

3
TK.

_0x1_は_1_を記述するもう1つの方法です!リテラル_1_は、10進数でも16進数でも同じです。ただし、常にそうであるとは限りません。たとえば、_decimal 10_は_hexadecimal 10_と等しくありません。

この例では、main()は1を返します。従来、0以外の戻り値はすべて、正常に完了しなかったものとして扱われます。

2
Arun

はい、0x1(16進数の1)は1(10進数の1)と同じです。したがって、上記はプレーンreturn 1と同等です。

mainは0を返す必要はありません。mainは、作成者が返したいものを何でも返す必要があります。彼らは1を返したかった-彼らは1を返した。彼らは16進数表記を使いたかった-彼らは16進数表記を使った。

誰かがそのようにしたいと思っただけです。他に説明はありません。

2
AnT

0x1は1の16進数です。コンパイル後、違いはありません。 0x0は0と同等です。

メイン関数の戻り値は、通常、システムでは使用されません。しかし、プログラムが他のプログラム(例えば、インストーラー)によって呼び出された場合、それらによってチェックされる可能性があります。すべてが正常である場合は0を返し、その他の場合はエラーを示すことが一般的です。

1
Ole Dittmann

基本数の意味を本当に理解していますか?

基数nの数値は、0からn-1までのn桁を使用します。 (Abb-1... A1 = Ab* nb + Ab-1* nb-1 + ... A1* n1 + A* n

したがって、1は有効な16進文字であり、0x1は1x16を意味します、本質的に1に等しい

1
phuclv

この情報はあなたに役立つと思いますか?
http://codepad.org/ による結果

1) int main()  {  return 0x0; } 
 Output: No errors or program output.

2) int main()  {  return 1x2; } //anythingxanything results below error
  error: invalid suffix "x2" on integer constant

3) int main()  {  return 0x2; } //0xanything results :exit failure except for 0
  Exited: ExitFailure 1

結果 http://www.comeaucomputing.com/tryitout/

except  2nd case it is compilng correctly(succeeded)

結果による

GCC[g++]  ---  error  return 1x0; except 2nd case all correct
EDG_compiler ---  error  return 1x0; except 2nd case all correct
Sun compiler ---  error  return 1x0; except 2nd case all correct

この結果を見ると、ITは1番目と3番目のケースを16進数として扱います。残りの2番目のケースは異なる(まったく数値ではない)式または変数として扱います..etc

1
BE Student

main()の戻り値は、チェックイン用の実行可能ファイルの戻り値/エラーコードとして外部呼び出し元に渡されます。たとえば、ERRORLEVELまたは$?

それは意味します:1を返す

この0xのような16進形式の数値を使用できます...

1
Xaqron