才学c语言,不明白结果怎么来的,?高手写写运算过程,让我明白明白,!

来源:百度知道 编辑:UC知道 时间:2024/06/14 00:10:40
1,
main()
{
int a;
a=-1;
printf("%dn,%o",a,a);
}
结果:
-1
177777

2,
main()
{
int a=-1;
printf("%d\n,%x",a,a);
}
结果
-1
ffff

3,
main()
{
unsigned int a=65535;
int b=-2;
printf("a=%d,%o,%x,%u\n",a,a,a,a);
printf("b=%d,%o,%x,%u\n",b,b,b,b);
}
结果
a=-1,177777,ffff,65535
b=-2,177776,fffe,65534

1:printf("%dn,%o",a,a);这个语句不对吧,应该是
printf("%d\n,%o",a,a);
因为prinf()为格式化输出函数,%d表示按10进制输出,而%o是八进制,%x是十六进制输出,%u是长整型输出,所以-1在八进制中是177777,

十进制的-1,-2转换成相应的进制就是那个数了,没什么过程
机器默认是16位的,所以最大数不能超过65535的,而长整型可以,所以%d输出-1,而%u输出65536