wuge288 发表于 2008-3-26 09:36:25

懂C语言的进来

#include<stdio.h>
void main()
{
int a;
long b;
float c;
double d;
a=b=c=d=100/3;
printf("a=%d\tb=%d\tc=%f\td=%lf\n",a,b,c,d);
a=b=c=d=(double)(10000/3);
printf("a=%d\tb=%f\tc=%lf\td=%lf\n",a,b,c,d);
}
结果为a=33       b=33       c=33.000000   d=33.000000
         a=3333      b=0.00000      c=0.000000   d=0.000000
为什么后面是b.c.d都是等于0帮我解析一下呀

jack3x 发表于 2008-3-26 10:40:43

你知道,为什么吗?,因为,各个数字的类型都不一致,整形,长整形,单精度浮点数,双精度浮点数,之间转换,必须写清楚怎么转化,而你
“a=b=c=d=100/3;”
和a=b=c=d=(double)(10000/3);
之间的类型明显不一致,你想还有结果,我想应该是这样

阿卜 发表于 2008-3-26 12:16:18

#include<stdio.h>
void main()
{
int a;
long b;
float c;
double d;
d=c=b=a=100/3;
printf("a=%d\tb=%movictorymo ld\tc=%f\td=%lf\n",a,b,c,d);
a=b=c=d=(double)(10000/3);
printf("a=%d\tb=%movictorymo ld\tc=%lf\td=%lf\n",a,b,c,d);
}
注意movictorymo
从第一个输出你的类型就与你定义的类型不符

阿卜 发表于 2008-3-26 12:19:46

因为你前面的错了而导致后面一起错
只是我不知道你的第一个“printf”c和d怎么会有结果
反正我运行是没有

T-VEN 发表于 2008-4-6 16:19:56

这么间单
!!!!!!!!!!!!
不过我不懂
页: [1]
查看完整版本: 懂C语言的进来