十进制负数转八进制
十进制的-617转换成八进制是176627,以下是两个程序定义分别为unsigned short int 和short int 的程序,但答案相差很远,按我的理解,无论哪种定义,两者都是16位,但根据结果反推,无符号型转换-617后的二进居然有24位,令我实在想不明白, 肯请高手出手帮忙解惑!请问:
程序1:
#include
int main(int argc, char *argv[])
{
unsigned short int a =-617;
printf("%o",a);
putchar('\n');
printf("%x",a);
return 0;
}
程序2:
#include
int main(int argc, char *argv[])
{
short int a =-617;
printf("%o",a);
putchar('\n');
printf("%x",a);
return 0;
}