if (ftPtr) {
*ftPtr = feet;
}
注意feet包含double值作为modf()函数的结果。另一方面ftPtr是一个unsigned int变量地址。
问题是现在这个程序运行的很好没有任何警告,但它在我嘴里留下了坏的味道,double类型值被赋予到int变量中。有用C语言赋予double值到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;
}
回答:是的,这很好。
double将首先被转换为一个unsigned int,然后它将被保存,它就好像是你这样写:
if (ftPtr) {
*ftPtr = (unsigned int)feet;
}
评论