Sle*_*ear 2 c c++ printf operator-keyword
#include <stdio.h>
int main(){
int x;
x = (10+20)*(1.0/2);
printf("%d", x);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是
15
Run Code Online (Sandbox Code Playgroud)
并以另一种形式:
#include <stdio.h>
int main(){
printf("%d", (10+20)*(1.0/2));
}
Run Code Online (Sandbox Code Playgroud)
输出是
0
Run Code Online (Sandbox Code Playgroud)
1.0/2是0.5当计算整型变量x,但1.0/2就是0计算时printf使用%d(我想...)
我无法理解这种情况......
另外,当我改变%d到%f在所述第二代码,所述输出是15.000000
我在Windows 8中使用DEV C++.
类型(10+20)*(1.0/2)是double,但"%d"期望一个int.
所以,你需要强制转换为int:
printf("%d", (int) ((10+20)*(1.0/2)));
Run Code Online (Sandbox Code Playgroud)
它适用于"%f"因为期望a double.
| 归档时间: |
|
| 查看次数: |
2530 次 |
| 最近记录: |