当我尝试打印幂函数的结果时,我总是得到 0
When I try to print result of the power function I always get 0
我是 C 语言的初学者,当我尝试编写这样的代码时:
printf("\n Answer : %d \n", 12* pow(2,1));
我总是得到答案:0
但是当我像这样写一个浮点数时:
printf("\n Answer : %f \n", 12* pow(2,1));
我得到:答案:24.0000
有人知道为什么会这样吗?
我的意思是为什么十进制打印为 0?
太感谢了。
使用错误的说明符会调用未定义的行为。结果可以是预期的,也可以是意外的。 %d
用于 int
类型。
C11: 7.21.6 (p9):
If a conversion specification is invalid, the behavior is undefined.282) If any argument is not the correct type for the corresponding conversion specification, the behavior is undefined.
pow
returns double
类型。它的签名是
double pow(double x, double y);
因此您需要 %f
来打印 double
type。
你看到的是Undefined Behaviour的结果。
printf
期望的类型与传递的类型不匹配。
说明符 "%d"
必须匹配 int
类型的值,但匹配您在表达式中提供的 double
类型的值。
任何事情都可能发生。
我是 C 语言的初学者,当我尝试编写这样的代码时:
printf("\n Answer : %d \n", 12* pow(2,1));
我总是得到答案:0 但是当我像这样写一个浮点数时:
printf("\n Answer : %f \n", 12* pow(2,1));
我得到:答案:24.0000
有人知道为什么会这样吗? 我的意思是为什么十进制打印为 0? 太感谢了。
使用错误的说明符会调用未定义的行为。结果可以是预期的,也可以是意外的。 %d
用于 int
类型。
C11: 7.21.6 (p9):
If a conversion specification is invalid, the behavior is undefined.282) If any argument is not the correct type for the corresponding conversion specification, the behavior is undefined.
pow
returns double
类型。它的签名是
double pow(double x, double y);
因此您需要 %f
来打印 double
type。
你看到的是Undefined Behaviour的结果。
printf
期望的类型与传递的类型不匹配。
说明符 "%d"
必须匹配 int
类型的值,但匹配您在表达式中提供的 double
类型的值。
任何事情都可能发生。