ali*_*der 2 c floating-point gcc
情况1:
printf("%f",(7/2));gcc输出为0.000000.
案例2:
float k= 7/2;
printf("%f",k);gcc输出为3.000000.
在第一种情况下,printf需要浮点但得到Integer所以给出了错误的结果.但在第二种情况下,它进行类型转换.
这是我的问题 -
在第二种情况下,它默认进行类型转换,但为什么不在第一种情况下呢?
在第一种情况下7,2两者都是int类型.除7由2会给你一个int.打印它将%f调用未定义的行为.你会得到任何东西.在这种情况下,没有类型转换.
试试这个
printf("%f", (7.0/2));
Run Code Online (Sandbox Code Playgroud)
在第二种情况下k是float类型,因此结果7/2被转换为k默认类型.
为什么gcc在第一种情况下不会出现类型不匹配错误/警告?
使用-Wallflag 编译第一个语句会发出警告:
[Warning] format '%f' expects argument of type 'double', but argument 2 has type 'int' [-Wformat=]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |