-1

Cで「\ 003」をintに変換するには? 次のコードがあります。

void* message="\003";
char* bptr;
printf("%ld",strtol((char*)message,&bptr,10));

出力として 0 を表示しています。

4

1 に答える 1

4

文字列リテラル"\003"は、2 文字からなる文字列を指定します。最初の値は 3 で、2 番目は暗黙の'\0'ヌル文字ターミネータです。

通常、値が 3 の文字は印刷可能な文字ではありません。特に、それは数字ではありません'3'

intその文字列から値を抽出する場合3は、次のようにします。

int result = ((char*)message)[0];

しかし、それは特に役立つことではないようです。

(1) なぜmessageasvoid*ではなく asを宣言したのかchar*、(2) なぜ制御文字を含む文字列を使用し'\003'て整数値を表しているのか疑問に思う必要があります3

整数値を文字列として表す通常の方法は、整数3"3"ではなく として表し'\003'ます。確かに (小さな) 整数値を 1 バイトとして表すことはできますが、それは通常、文字列や配列ではなく、 1 つのcharまたはオブジェクトを使用します。unsigned char最後に、任意の数値を一連のバイトとして表現する方法がありますが、それを行う場合、表現の詳細を私たちに伝えていません。たとえば、整数値を表す文字列は何1000ですか?

于 2013-06-10T20:44:03.480 に答える