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);
}

想知道为什么?任何答案,为什么这不起作用。我认为这应该自动转换为十六进制八进制并且至少它应该正确打印十进制

  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 回答