c语言pow用法举例,python求和代码
pow (10,2 )整形中输出结果为0,浮点数为100.0,这是怎么回事
printf(“%d”、pow ) ) 10、2 ); 输出为0
printf(“%f”、pow ) ) 10、2 ); 输出为100.00000
这是什么情况? 我使用的dev cpp是编译器的问题吗?
——335433543354335433543354——3354335433543354335433543354——33——不是编译器的问题。 pow ) )返回类型为double。 在double/float类型的数据输出格式中使用“%d”会得到奇怪的值。
要避免这种情况,请添加类型转换。
printf(“%d”、pow )、2 ) -输出为0
printf(“%d”,) int ) pow ) ) 10,2 ) -输出为100
这与va_start/va_arg/va_end分析参数有关。 当printf遇到“%d”时,它会以int*类型从参数列表中检索变量,但float/double是8字节,因此只能检索一半的——4字节。
看看浮点100是如何存储在存储器中的。
00 00 00 00 00 00 59 40 —-将浮点100存储在内存中(十六进制,8字节)。
用int指针取4个字节,得到0。
使用强制类型转换将浮点转换为int可以获得正确的100。