请教一个C语言程序运行结果的问题?

来源:百度知道 编辑:UC知道 时间:2024/05/11 00:03:00
#include<stdio.h>
void main()
{int a,b;
float d,e;
char c1,c2;
double f,g;
long m,n;
unsigned int p,q;
scanf("%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u,",&a,&b,&c1,&c2,&d,&e,&f,&g,
&m,&n,&p,&q);
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%15.6f,e=%15.12f\n",a,b,c1,c2,d,e);
printf("f=%f,g=%f\nm=%d,n=%d\np=%d,q=%d\n",f,g,m,n,p,q);
} 输入61,62,a,b,3.56,-6.87,3157.890121,0.123456789,50000,-60000,37678,40000
运行结果 n=0,p=5536,q=1这是为什么呢?

二进制小数的问题,有符号的最高位为符号位,无符号的最高位为数字为,当你输入有符号数,是负数时,最高位为1,整数为0,你自己慢慢做无符号与有符号数的转化吧。
注:有符号负数以补码形式存放

不会吧,我在vc上运行过,没错啊 问下楼上的,c可以输出二进制的数吗?