C语言里“/”在表示两个数相除时
C语言里“/”在表示两个数相除时具体处理很有意思:看看这段代码的输出:
printf("%d\n",5/3);
printf("%f\n",5/3);
printf("%f\n",5。 0/3);
printf("%d\n",5。0/3);
printf("%f\n",5/3。0);
printf("%d\n",5/3。0);
(1)1
(2)839。 209961
(3)1。666667
(4)-1431655765
(5)1。666667
(6)-1431655765
说明:当两个都是整数是,计算的实际上是整数商,抛弃余数(1);
当一个是小数时,按照小数计算,结果是小数(3、4、...全部
C语言里“/”在表示两个数相除时具体处理很有意思:看看这段代码的输出:
printf("%d\n",5/3);
printf("%f\n",5/3);
printf("%f\n",5。
0/3);
printf("%d\n",5。0/3);
printf("%f\n",5/3。0);
printf("%d\n",5/3。0);
(1)1
(2)839。
209961
(3)1。666667
(4)-1431655765
(5)1。666667
(6)-1431655765
说明:当两个都是整数是,计算的实际上是整数商,抛弃余数(1);
当一个是小数时,按照小数计算,结果是小数(3、4、5、6)。
此时如果按照整数输出,系统就将浮点数转化为整数,(4、6)出现乖乖的结果;
有意思的是(2),将5/3的记过按照浮点数输出,结果是839。209961,说明我的机器整数是32位,而浮点数是用double表示的,80位,由于字长不够,系统就取了整数后面的字节作为浮点数的一部分,所以输出成了(2)的样子,这是随机的,和机器有关。
。收起