的地方双重价值看到这些线路中的程序:存储在unsigned int类型
if (ftPtr) {
*ftPtr = feet;
}
注意feet
包含double
值作为modf()
结果。另一方面,ftPtr
是unsigned int
变量的地址。
问题 现在这个程序没有任何预兆的运行良好,但它留下了不好的味道在我嘴里说double值分配给int变量。在C中使用地址koshher将int值赋给int变量?
#include <stdio.h>
#include <math.h>
void metersToFeetAndInches(double meters, unsigned int *ftPtr, double *inPtr) {
double feet;
double inches;
double rawFeet = meters * 3.281;
inches = modf(rawFeet, &feet);
if (ftPtr) {
*ftPtr = feet;
}
if (inPtr) {
*inPtr = inches;
}
}
int main(int argc, const char * argv[])
{
double meters = 1.80;
unsigned int feet;
double inches;
metersToFeetAndInches(meters, &feet, &inches);
printf("%.2f meters is %d feet and %.2f", meters, feet, inches);
return 0;
}