簡體   English   中英

為什么printf自動將%x%o%d轉換為十六進制的oct和dec

[英]why does printf auto convert %x %o %d to hex oct and dec

我認為這應該可行。

#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輸入。

short可能是您平台上的16位,在這種情況下32768不適合。 嘗試改用更大的類型。

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

對不起,我犯了一個愚蠢的錯誤。 但是,當您提出問題時,它確實有幫助,並給您勇氣和安慰。

      scanf("%hi",&i);

刪除0x可以解決此問題。 感謝大家的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM