0

これがうまくいくはずだと思った方法。

#include<stdio.h>
void main(void)
{   
     short i;
     scanf("0x%hi",&i);
     printf("0x%x\n",i);
     printf("0%o\n",i);
     printf("%d\n",i);
}

なぜだろう?答えがあれば、なぜこれが機能しないのか。これにより、16進数の10進数への変換が自動的に行われ、少なくとも10進数が正しく出力されるはずだと思いました

  32768
  0x26
  046
  38

32768 input で得られるものです。

4

2 に答える 2

4

shortプラットフォームではおそらく 16 ビットであり、その場合32768は適合しません。代わりに、より大きなタイプを使用してみてください。

デモ: http://ideone.com/D0hzP .

于 2012-07-13T20:08:43.267 に答える
0

すみません、ばかげた間違いをしました。しかし、質問をすることは本当に助けになり、勇気と慰めを与えてくれます。

      scanf("%hi",&i);

0x を削除すると、これが修正されました。助けてくれてありがとう。

于 2012-07-13T20:41:24.160 に答える