#include
#include
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;
}
结果如图:
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
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了
精度问题你自己实验一下吧。。。
#include
#include
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
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一样