代码一、
- #include <stdio.h>
-
#include <stdlib.h>
-
int main ( void )
-
{
-
float c = 0.0;
-
c = 1 /2 ;
-
printf("== 1 / 2 = %.2f == \n",c);
-
return 0;
-
}
编译:
$ cc -o b b.c
运行:
$ ./b
== 1 / 2 = 0.00 ==
$
问题出来了,为啥不是 0.50 ?
代码二、
- #include <stdio.h>
- #include <stdlib.h>
- int main ( void )
- {
-
float c = 0.0;
-
c = (float)((float)1 /(float)2) ;
-
printf("== 1 / 2 = %.2f == \n",c);
-
return 0;
- }
编译:
$ cc -o b b.c
运行:
$ ./b
== 1 / 2 = 0.50 ==
$
看出来代码的不同么?
如果是两个整数相除,其结果是绝对不会自动转换成浮点型或者是双精度型的,因此在相除之前,必须对参与触法运算的整数或者是整形变量强制转换成浮点型或者是双精度型,切记,切记。
阅读(4517) | 评论(0) | 转发(0) |