C语言 这个结果是怎么出来的

来源:百度知道 编辑:UC知道 时间:2024/09/20 15:36:41
#include<stdio.h>
#include<stdlib.h>

void main()
{
union bt
{
int k;
char c[2];

}a;
a.k=-7;
printf("%o,%o\n",a.c[0],a.c[1]);

}

结果是37777777771,37777777777
请问是怎么出来的??
可是不正确的显示为什么是这个奇怪的数 这个这个如果是考试我可怎么算啊?????

#include"stdio.h"
void main()
{
union bt
{
int k;
char c[2];

}a;
a.k=-7;
printf("%o,%o\n",a.c[0],a.c[1]);
printf("%d,%d\n",a.c[0],a.c[1]);
printf("%o\n",-7);

}
37777777771,37777777777
-7,-1
37777777771
我将程序改了一吓,你应该可以看出!
%o是输出无符号的整数。
上面程序显示,a.c[0],a.c[1])分别为十进制-7和-1。%o不能正确显示,就不正确的显示了37777777771,37777777777。

若你会用调试,这程序很容易就懂了。
单步调试可以清楚每个步骤&

一般编程软件都会有的(调试)