0

私は非常に奇妙な問題に遭遇しました。ここで非常に基本的なことが欠けていると思います。私がこれを行うとき:

    char buffer[1] = {0xA0};
    int value=0;
    value = (int)buffer[0];
    printf("Array : %d\n",value); 

-96 という結果が得られますが、これは起こるべきではありません。16 進数の 0xA0 は 10 進数で 160 を意味するため、160 が返されるはずです。0x1F のような小さな値をバッファに入れると、正常に動作します。ここで何が欠けているのか誰か教えてもらえますか?

4

1 に答える 1

6

char符号付き -128 ~ 127

buffer次のように宣言unsigned charまたはキャストunsigned char:

char buffer[1] = {0xA0};
int value=0;
value = (unsigned char)buffer[0];
printf("Array : %d\n",value); 
于 2012-11-13T06:29:08.197 に答える