为什么printf会自动将%x%o%d转换为hex oct和dec

时间:2012-07-13 20:06:42

标签: c

我认为这应该有用。

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

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

  32768
  0x26
  046
  38

是我获得的32768输入。

2 个答案:

答案 0 :(得分:4)

您平台上的

short可能是16位,在这种情况下32768不合适。请尝试使用更大的类型。

演示:http://ideone.com/D0hzP

答案 1 :(得分:0)

抱歉,我犯了一个愚蠢的错误。但是当你提出问题时,它确实有帮助并且给予了勇气和安慰。

      scanf("%hi",&i);

删除0x修复此问题。感谢大家的帮助。