C/C++ 语言可以说是很直来直往的语言,你不声明,它就装傻,什么意思呢?
举例 1:
#include <stdio.h>
int main()
{
int a = 3; // 这里声明 a 是整数
for(int i = 1; i < 10; i++){ // i 也是整数
printf("%.1f\n", (float)(i/a)); // 这里声明 i 除 a 得浮点数(注:这里是结果变成浮点数,不是运行算法的之前就变成浮点数)
}
return 0;
}
输出结果:0.0
0.0
1.0
1.0
1.0
2.0
2.0
2.0
3.0
明显答案输出不对啊,这是因为你没有声明,所以 C/C++ "装傻"呗。
举例 2:#include <stdio.h>
int main()
{
int a = 3; // 这里声明 a 是整数
for(int i = 1; i < 10; i++){ // i 也是整数
printf("%.3f\n", ((float)i/a)); // 这里声明 i 是浮点数,然后除 a 得浮点数(注:这里是运行算法之前 i 就变成浮点数,结果变成浮点数)
}
return 0;
}
输出结果:0.333
0.667
1.000
1.333
1.667
2.000
2.333
2.667
3.000
这里你会发现,只要稍微改写一点点,输出结果大不相同(这里只是将 (float) 写在括号里面 i 的旁边) |