C语言:写出程序运行结果并解释为什么

#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,c;
float d=15,e,f;
a=35%7;
b=15/10;
c=b++;
e=15/10;
f=d/10;
printf("%d,%d,%d,%f,%f,%f",a,b,c,d,e,f);
return 0;
}

#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,c;
float d=15,e,f;
a=35%7;///0 35除以7 余数是0
b=15/10;//int类型计算结果舍弃小数部分  结果是   1
c=b++;//  先使用b的值b在+1   c=1  b=2
e=15/10;// 1.000,因为15 和 10 都是int类型 计算结果是int 类型1  再把int 1变成 float 1.00000
f=d/10;///1.5,因为d是float类型,  因此 d/10  是float  类型1.50000
printf("%d ,%d ,%d ,%f ,%f ,%f",a,b,c,d,e,f);
return 0;
}

 

追问

所以c=b++;就等于c=b;b++;是吗

追答

是的,可以这样理解

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-31

结果如图:

float d= 15;浮点d = 15.000000

a = 0 : 35 取余 7 等于0

b = 15/10 :15整除10等于1

c = b++ : 这句b++后加,所以c = 1,b = 2;

e = 15/10 :因为15 和 10都是整数,15/10整除后结果为1,强转为浮点数1.000000

f = d/10 因为d为15.000000 除以10浮点除法f = 1.5000000

第2个回答  2014-10-31
a=0
b=1,15、10都是整型数,相除的话,只取整数部分,即1.5就取1,然后赋值给b
c=2
e=1,同b,因为除出来的结果是1,赋值给double也是1。。
f=1.5,因为d是double型的,除以10得到的是double型1.5,赋值给f就是1、5了

精度问题你自己实验一下吧。。。
第3个回答  2014-10-31
#include <stdio.h>

#include <stdlib.h>

int main()

{

   int a,b,c;

   float d=15,e,f;

   a=35%7;   //余数是0 ,所以a是0

   b=15/10;  //整数除法不要小数部分,所以 b是1

   c=b++;    //后置++做完之后 c是 1 ,b是2

   e=15/10;  //虽然e是浮点数,但是赋值在后,所以e是1.0,不是1.5

   f=d/10;   //因为d是浮点数,所以做了实数除法,所以f是 1.5

   printf("%d,%d,%d,%f,%f,%f",a,b,c,d,e,f);

   return 0;

}

因此结果是:0,2,1,15.0, 1.0,1.5

第4个回答  2014-10-31
a=0;35取7的余为0。b=1,15除以10得1.5,%d是取整。c=1;b++是b给c赋值之后自加1。d=15.00000000
d是浮点型,%f是单精度浮点型的占位符。e=1.50000000;e声明的时候是浮点型,%f浮点型的占位符。
f=1.50000000;理由和e一样
相似回答