@
@南方
main()
{int a,b;
float d,e;
char c1,c2;
double f,g;
long m,n;
unsigned int p,q;
a=61;b=62;
c1='a';c2='b';
d=3.56;e=-6.87;
f=3157.890121;g=0.123456789;
m=50000;n=-60000;
p=32768;q=40000;
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);
printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q);
}
运行结果:
a=61,b=62
c1=a,c2=b
d= 3.56,e= -6.87
f= 3157.890121,g= 0.123456789000
m=50000,n=-60000
p=32768,q=40000
把第8~13行改为:
a=61;b=62;
c1=a;c2=b;
f=3157.890121;g=0.1234567;
d=f;e=g;
p=a=m=50000;q=b=n=-60000;
其运行结果
a=-15536,b=5536
c1==,c2=>
d=3157.89,e= 0.12
f= 3157.890121,g= 0.123456700000
m=50000,n=-60000
p=50000,q=5536
由上可见给字符型变量赋值必须用‘‘括起来,否则会出错;而a、b是带符号的整型数,它的最大范围为-32768~+32767,而现在赋给它的值超出了这个范围,也输出了错误的结果;p、q是不带符号的整型数,它的最大范围为0~65535,而给q赋的值是-60000,所以产生了q=5536的错误。
将p,q改用%o格式(八进制)输出
p=100000,q=12640
为何会出现这样的结果????
{int a,b;
float d,e;
char c1,c2;
double f,g;
long m,n;
unsigned int p,q;
a=61;b=62;
c1='a';c2='b';
d=3.56;e=-6.87;
f=3157.890121;g=0.123456789;
m=50000;n=-60000;
p=32768;q=40000;
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);
printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q);
}
运行结果:
a=61,b=62
c1=a,c2=b
d= 3.56,e= -6.87
f= 3157.890121,g= 0.123456789000
m=50000,n=-60000
p=32768,q=40000
把第8~13行改为:
a=61;b=62;
c1=a;c2=b;
f=3157.890121;g=0.1234567;
d=f;e=g;
p=a=m=50000;q=b=n=-60000;
其运行结果
a=-15536,b=5536
c1==,c2=>
d=3157.89,e= 0.12
f= 3157.890121,g= 0.123456700000
m=50000,n=-60000
p=50000,q=5536
由上可见给字符型变量赋值必须用‘‘括起来,否则会出错;而a、b是带符号的整型数,它的最大范围为-32768~+32767,而现在赋给它的值超出了这个范围,也输出了错误的结果;p、q是不带符号的整型数,它的最大范围为0~65535,而给q赋的值是-60000,所以产生了q=5536的错误。
将p,q改用%o格式(八进制)输出
p=100000,q=12640
为何会出现这样的结果????