printf中的C语言计算
C language calculation in printf
#include <stdio.h>
int main(){
int x;
x = (10+20)*(1.0/2);
printf("%d", x);
return 0;
}
输出是
15
另一种形式:
#include <stdio.h>
int main(){
printf("%d", (10+20)*(1.0/2));
}
输出是
0
1.0/2
在整型变量x
中计算时为0.5
,
但是 1.0/2
在 printf
中用 %d
计算时 0
(我认为...)
我无法理解这种情况...
此外,当我在第二个代码中将%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)));
它适用于 "%f"
,因为它需要 double
。
如前所述,您的问题是铸造问题。
因为 1.0/2 = 0.5 --> 由于 int 转换,它被转换为 0。
正确的方法是使用计算函数 - returns 一个整数,将其转换为 int (按照建议),或者在 printf.
之前进行计算
#include <stdio.h>
int main(){
int x;
x = (10+20)*(1.0/2);
printf("%d", x);
return 0;
}
输出是
15
另一种形式:
#include <stdio.h>
int main(){
printf("%d", (10+20)*(1.0/2));
}
输出是
0
1.0/2
在整型变量x
中计算时为0.5
,
但是 1.0/2
在 printf
中用 %d
计算时 0
(我认为...)
我无法理解这种情况...
此外,当我在第二个代码中将%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)));
它适用于 "%f"
,因为它需要 double
。
如前所述,您的问题是铸造问题。 因为 1.0/2 = 0.5 --> 由于 int 转换,它被转换为 0。 正确的方法是使用计算函数 - returns 一个整数,将其转换为 int (按照建议),或者在 printf.
之前进行计算